ボールのお散歩
/**
* Copyright weBBBBB ( http://wonderfl.net/user/weBBBBB )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/j2kE
*/
// forked from nengafl's nengafl
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
[SWF(width="465", height="465", backgroundColor="0x000000", frameRate="25")]
public class FrictionSample extends Sprite
{
private var _ball1:MyBall; //1個目のボール
private var _ball2:MyBall; //2個目のボール
private var _ball3:MyBall; //3個目のボール
private var _ball4:MyBall; //4個目のボール
private var _ball5:MyBall; //5個目のボール
private var _ball6:MyBall; //6個目のボール
private var _ball7:MyBall; //7個目のボール
private var _ball8:MyBall; //8個目のボール
private var _ball9:MyBall; //9個目のボール
private var _ball10:MyBall;//10個目のボール
public function FrictionSample()
{
//ボールの作成
_ball1 = new MyBall(); //1個目のボール
_ball2 = new MyBall(); //2個目のボール
_ball3 = new MyBall(); //3個目のボール
_ball4 = new MyBall(); //4個目のボール
_ball5 = new MyBall(); //5個目のボール
_ball6 = new MyBall(); //6個目のボール
_ball7 = new MyBall(); //7個目のボール
_ball8 = new MyBall(); //8個目のボール
_ball9 = new MyBall(); //9個目のボール
_ball10 = new MyBall(); //10個目のボール
//ボールの位置を指定
_ball1.x = _ball1.y = 100;//1個目のボールの位置
_ball2.x = _ball2.y = 200;//2個目のボールの位置
_ball3.x = _ball3.y = 300;//2個目のボールの位置
_ball4.x = _ball4.y = 400;//2個目のボールの位置
_ball5.x = _ball5.y = 500;//2個目のボールの位置
_ball6.x = _ball6.y = 600;//2個目のボールの位置
_ball7.x = _ball7.y = 700;//2個目のボールの位置
_ball8.x = _ball8.y = 800;//2個目のボールの位置
_ball9.x = _ball9.y = 900;//2個目のボールの位置
_ball10.x = _ball10.y = 1000;//2個目のボールの位置
//ボールを表示
addChild(_ball1); //1個目のボール
addChild(_ball2); //2個目のボール
addChild(_ball3); //3個目のボール
addChild(_ball4); //4個目のボール
addChild(_ball5); //5個目のボール
addChild(_ball6); //6個目のボール
addChild(_ball7); //7個目のボール
addChild(_ball8); //8個目のボール
addChild(_ball9); //9個目のボール
addChild(_ball10);//10個目のボール
addEventListener(Event.ENTER_FRAME,loop);
}
//ここではクリックされたら丸が消える処理
public function clear():void
{
//イベントハンドラの解除
removeEventListener(MouseEvent.CLICK,clickHandler);
//円の消去
graphics.clear();
}
private function loop(event:Event):void
{
//ボール1に2〜10までボールがついてくる処理
_ball1.x += friction(_ball1.x,mouseX,8) // 1個目のボールX
_ball1.y += friction(_ball1.y,mouseY,8) // 1個目のボールY
_ball2.x += friction(_ball2.x,_ball1.x,5) // 2個目のボールX
_ball2.y += friction(_ball2.y,_ball1.y,5) // 2個目のボールY
_ball3.x += friction(_ball3.x,_ball2.x,5) // 3個目のボールX
_ball3.y += friction(_ball3.y,_ball2.y,5) // 3個目のボールY
_ball4.x += friction(_ball4.x,_ball3.x,5) // 4個目のボールX
_ball4.y += friction(_ball4.y,_ball3.y,5) // 4個目のボールY
_ball5.x += friction(_ball5.x,_ball4.x,5) // 5個目のボールX
_ball5.y += friction(_ball5.y,_ball4.y,5) // 5個目のボールY
_ball6.x += friction(_ball6.x,_ball5.x,5) // 6個目のボールX
_ball6.y += friction(_ball6.y,_ball5.y,5) // 6個目のボールY
_ball7.x += friction(_ball7.x,_ball6.x,5) // 7個目のボールX
_ball7.y += friction(_ball7.y,_ball6.y,5) // 7個目のボールY
_ball8.x += friction(_ball8.x,_ball7.x,5) // 8個目のボールX
_ball8.y += friction(_ball8.y,_ball7.y,5) // 8個目のボールY
_ball9.x += friction(_ball9.x,_ball8.x,5) // 9個目のボールX
_ball9.y += friction(_ball9.y,_ball8.y,5) // 9個目のボールY
_ball10.x += friction(_ball10.x,_ball9.x,5)//10個目のボールX
_ball10.y += friction(_ball10.y,_ball9.y,5)//10個目のボールY
addEventListener(MouseEvent.CLICK,clickHandler);
}
//ゼノンの逆説を使ったイージング計算
private function friction(src:Number,dest:Number,num:Number):Number
{
return (dest - src) / num;
}
//ここでは円が消えたあとのボールの位置
private function clickHandler(event:MouseEvent):void
{
x = _ball1.x;
y = _ball1.y;
}
}
}
import flash.display.Sprite;
class MyBall extends Sprite
{
public function MyBall():void
{
graphics.beginFill(Math.random() * 16777216);
graphics.drawCircle(0,0,20);
graphics.endFill();
}
}