forked from: forked from: flash on 2010-1-11
forked from 複数のボールを個々に動かすにはどうすればよいですか? (diff: 77)
ActionScript3 source code
/**
* Copyright Tamanegi_kenshi ( http://wonderfl.net/user/Tamanegi_kenshi )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/zQhw
*/
package{
import flash.display.Sprite;
import flash.events.Event;
[SWF(width=465,height=465,backgroundColor=0)]
public class test extends Sprite{
private var ball:BALL;
private var Balls:Array;
private var ballsNum:int =8;
private var spring:Number =0.1;
private var gravity:int =0;
private var friction:Number =0.5;
public function test(){
init();
}
private function init():void{
Balls =new Array();
for(var i:int=0;i<ballsNum;i++){
ball =new BALL(20,Math.random()*0xffffff);
ball.alpha =1-0.1*i;
addChild(ball);
Balls.push(ball);
}
addEventListener(Event.ENTER_FRAME,on);
}
private function on(event:Event):void{
moveBall(Balls[0],mouseX,mouseY);
for(var i:int=1;i<ballsNum;i++){
moveBall(Balls[i],Balls[i-1].x,Balls[i-1].y);
}
}
private function moveBall(ball:BALL,targetX:Number,targetY:Number):void{
ball.vx +=(targetX -ball.x)*spring;
ball.vy +=(targetY -ball.y)*spring;
ball.vy +=gravity;
ball.vx *=friction;
ball.vy *=friction;
ball.x +=ball.vx;
ball.y +=ball.vy
}
}
}
import flash.display.Sprite;
class BALL extends Sprite{
public var radius:int;
public var color:uint;
public var vx:Number =0;
public var vy:Number =0;
public function BALL(radius:int=10,color:uint=0x000000){
this.radius =radius;
this.color =color
graphics.beginFill(color);
graphics.drawCircle(0,0,radius);
graphics.endFill();
}
}
