flash on 2010-2-4 hacker_qyjyd.. forked:0favorite:0lines:55license : MIT License modified : 2010-02-05 10:22:29 Embed Tweet package { import flash.display.MovieClip; import flash.events.Event; import flash.geom.Point; [swf(width=465,height=465,backgroundColor=0xffffff,frameRate=30)] public class FlashTest extends MovieClip { // 物体の数 private const PARTICLE_COUNT:uint = 5; // 物体の半径 private const PARTICLE_SIZE:uint = 20; // 物体の質量 //private const PARTICLE_MASS:uint = 5; // 重力の設定 private const GRAVITY:Number = 0.9; // 摩擦係数 private const FRICTION:Number = 0.7; // ばねの強さ private const SPRING:Number = 0.1; // particle list private var _particles:Array; public function FlashTest() { // create particles _particles = []; var initX:Number = mouseX; var initY:Number = mouseY; for(var i:uint=0;i<PARTICLE_COUNT;i++){ _particles.push(new Particle(PARTICLE_SIZE)); _particles[i].alpha = 0.7; _particles[i].x = initX; _particles[i].y = initY; addChild(_particles[i]); } addEventListener(Event.ENTER_FRAME, enterFrameListener); } private function move(particle:Particle, targetX:Number, targetY:Number):void{ // 加速度にスプリング係数を書けて、速度へ加算 particle.vx += (targetX - particle.x)*SPRING; particle.vy += (targetY - particle.y)*SPRING; //重力加速度を加算 particle.vy += GRAVITY*particle.mass; //速度に摩擦係数を乗算 particle.vx *= FRICTION; particle.vy *= FRICTION; // 位置に加算 particle.x += particle.vx; particle.y += particle.vy; } private function enterFrameListener(event:Event):void{ graphics.clear(); /*graphics.lineStyle(1); //マウスの位置へ移動 graphics.moveTo(mouseX, mouseY); //マウスの位置から最初の物体の位置へ線を引く graphics.lineTo(_particles[0].x, _particles[0].y);*/ move(_particles[0], mouseX, mouseY); for(var i:uint=1;i<_particles.length;i++){ //次の物体の位置へ線を引く //graphics.lineTo(_particles[i].x, _particles[i].y); move(_particles[i], _particles[i-1].x, _particles[i-1].y); } } } } import flash.display.Graphics; import flash.display.MovieClip; class Particle extends MovieClip{ public var vx:Number = 0; public var vy:Number = 0; public var mass:Number = 5; public function Particle(size:Number = 20, mass:Number = 5):void{ var gr:Graphics = graphics; gr.beginFill(0xeeeeee*Math.random()+0x111111,0.9); gr.drawCircle(0, 0, size); } } Code Fullscreen Preview Fullscreen mouseX mouseY alpha height width MovieClip addEventListener addChild graphics push length Event.ENTER_FRAME Event uint Array Math.random Number