In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: ボールのお散歩

----
「ボールのお散歩」改め、クマのお散歩
ボールのレイヤー(というのか?)の上下関係を考慮し、
最前面のボールが先頭に来るように変更
----
/**
 * Copyright tenasaku ( http://wonderfl.net/user/tenasaku )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ds0y
 */

// forked from makoto's ボールのお散歩
// forked from nengafl's nengafl

/* ----
	「ボールのお散歩」改め、クマのお散歩
  ボールのレイヤー(というのか?)の上下関係を考慮し、
  最前面のボールが先頭に来るように変更
 ---- */
package
{
	
	
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	[SWF(width="465", height="465", backgroundColor="0xffffff", frameRate="30")]
	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);   //1個目のボール
			_ball2 = new MyBall(2);  //2個目のボール
			_ball3 = new MyBall(3);  //3個目のボール
			_ball4 = new MyBall(4);  //4個目のボール
			_ball5 = new MyBall(5);  //5個目のボール
			_ball6 = new MyBall(6);  //6個目のボール
			_ball7 = new MyBall(7);  //7個目のボール
			_ball8 = new MyBall(8);  //8個目のボール
			_ball9 = new MyBall(9);  //9個目のボール
			_ball10 = new MyBall(10); //10個目のボール
			//ボールの位置を指定
			_ball1.x = _ball1.y   = 180;//1個目のボールの位置
			_ball2.x = _ball2.y   = 160;//2個目のボールの位置
			_ball3.x = _ball3.y   = 140;//3個目のボールの位置
			_ball4.x = _ball4.y   = 120;//4個目のボールの位置
			_ball5.x = _ball5.y   = 100;//5個目のボールの位置
			_ball6.x = _ball6.y   = 80;//6個目のボールの位置
			_ball7.x = _ball7.y   = 60;//7個目のボールの位置
			_ball8.x = _ball8.y   = 40;//8個目のボールの位置
			_ball9.x = _ball9.y   = 20;//9個目のボールの位置
			_ball10.x = _ball10.y = 0;//10個目のボールの位置
			//ボールを表示
			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);
			addEventListener(MouseEvent.CLICK,clickHandler);
		}
		
		//ここではクリックされたら丸が消える処理
		 public function clear():void
		  {
		  	// 次の一行は loop() 内の addEventListener 削除に伴いコメントアウト
			// イベントハンドラの解除
			// removeEventListener(MouseEvent.CLICK,clickHandler);			  
			//円の消去
			  graphics.clear();
			// この関数はどこから呼ばれているんだろう?
		  }
		
		private function loop(event:Event):void
		{
			// ボール1に2〜10までボールがついてくる処理
			// -- 位置関係を逆転させました (tenasaku)
			// -- だけど addChild の順序を変えればよかったのか... 
			_ball10.x += friction(_ball10.x,mouseX,8);  // 1個目のボールX
			_ball10.y += friction(_ball10.y,mouseY,8); // 1個目のボールY
			_ball9.x += friction(_ball9.x,_ball10.x,5); // 2個目のボールX
			_ball9.y += friction(_ball9.y,_ball10.y,5); // 2個目のボールY
			_ball8.x += friction(_ball8.x,_ball9.x,5);  // 3個目のボールX
			_ball8.y += friction(_ball8.y,_ball9.y,5); // 3個目のボールY
			_ball7.x += friction(_ball7.x,_ball8.x,5); // 4個目のボールX
			_ball7.y += friction(_ball7.y,_ball8.y,5); // 4個目のボールY
			_ball6.x += friction(_ball6.x,_ball7.x,5); // 5個目のボールX
			_ball6.y += friction(_ball6.y,_ball7.y,5); // 5個目のボールY
			_ball5.x += friction(_ball5.x,_ball6.x,5); // 6個目のボールX
			_ball5.y += friction(_ball5.y,_ball6.y,5); // 6個目のボールY
			_ball4.x += friction(_ball4.x,_ball5.x,5); // 7個目のボールX
			_ball4.y += friction(_ball4.y,_ball5.y,5); // 7個目のボールY
			_ball3.x += friction(_ball3.x,_ball4.x,5); // 8個目のボールX
			_ball3.y += friction(_ball3.y,_ball4.y,5); // 8個目のボールY
			_ball2.x += friction(_ball2.x,_ball3.x,5); // 9個目のボールX
			_ball2.y += friction(_ball2.y,_ball3.y,5); // 9個目のボールY
			_ball1.x += friction(_ball1.x,_ball2.x,5); //10個目のボールX
			_ball1.y += friction(_ball1.y,_ball2.y,5); //10個目のボールY
			// addEventListener は削除しました (tenasaku)
		}
		//ゼノンの逆説を使ったイージング計算
		private function friction(src:Number,dest:Number,num:Number):Number
		{
			return (dest - src) / num;
		}
		//ここでは円が消えたあとのボールの位置
		private function clickHandler(event:MouseEvent):void
		{
			 x = _ball10.x;
			 y = _ball10.y;
			 
		}
	}
}

import flash.display.Sprite;

// もはや ボール とは言えんな、これは (tenasaku)
class MyBall extends Sprite
{
	public function MyBall(c:int):void
	{
		var _theta:Number = (c-1)*Math.PI/6;
		var b:uint = Math.floor((1+Math.cos(_theta))*127.99);
		var r:uint = Math.floor((1+Math.cos(_theta+Math.PI*2/3))*127.99);
		var g:uint = Math.floor((1+Math.cos(_theta+Math.PI*4/3))*127.99);
		var cc:uint = ((r << 16)|(g << 8)|b) & 0xffffff;
		// クマ耳
		graphics.beginFill(cc);
		graphics.lineStyle(0,0x000000);
		graphics.drawCircle(-16,-13,9);
		graphics.drawCircle( 16,-13,9);
		graphics.endFill();
		// クマ顔面
		graphics.beginFill(cc);
		graphics.lineStyle(1,0x000000);
		graphics.drawCircle(0,0,20);
		graphics.endFill();
		// クマ口
		graphics.lineStyle(2,0x000000);
		graphics.moveTo(-1, 7);
		graphics.lineTo(-7,11);
		graphics.moveTo( 1, 7);
		graphics.lineTo( 7,11);
		// クマ鼻
		graphics.lineStyle(1,0x000000);
		graphics.beginFill(0x000000);
		graphics.moveTo(-3, 2);
		graphics.lineTo( 3, 2);
		graphics.lineTo( 1, 6);
		graphics.lineTo(-1, 6);
		graphics.lineTo(-3, 2);
		graphics.endFill();
		// クマ目
		graphics.beginFill(0x000000);
		graphics.drawCircle(-11, 0,1);
		graphics.drawCircle( 11, 0,1);
		graphics.endFill();
	}
}