forked from: forked from: flash on 2010-1-11

by Tamanegi_kenshi forked from 複数のボールを個々に動かすにはどうすればよいですか? (diff: 77)
♥0 | Line 55 | Modified 2010-02-24 05:19:48 | MIT License
play

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();
		}
}

Forked