Yukkuri(まずはサンプル通り)

by mattodesign
練習
Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編]
http://www.amazon.co.jp/Flash-Math-Physics-Design-3-0%E3%81%AB%E3%82%88%E3%82%8B%E6%95%B0%E5%AD%A6%E3%83%BB%E7%89%A9%E7%90%86%E5%AD%A6%E8%A1%A8%E7%8F%BE/dp/4797351411
♥0 | Line 79 | Modified 2009-05-26 23:27:27 | MIT License
play

ActionScript3 source code

/**
 * Copyright mattodesign ( http://wonderfl.net/user/mattodesign )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/mQQW
 */

//練習
//Flash Math & Physics Design:ActionScript 3.0による数学・物理学表現[入門編]
//http://www.amazon.co.jp/Flash-Math-Physics-Design-3-0%E3%81%AB%E3%82%88%E3%82%8B%E6%95%B0%E5%AD%A6%E3%83%BB%E7%89%A9%E7%90%86%E5%AD%A6%E8%A1%A8%E7%8F%BE/dp/4797351411
package 
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.utils.Timer;
	import flash.events.TimerEvent;
	
	[SWF(width = "465", height = "465", frameRate = "60", backgroundColor = "#000000")]

	public class Yukkuri extends MovieClip {
		//プロパティ宣言
		private var ball:Sprite;
		private var line:Sprite;
		private var rollovered:Boolean = false;
		private var obj:Array;
		private var timer:Timer;
		
		public function Yukkuri():void {
			line = new Sprite();
			line.graphics.lineStyle(2, 0xFFFFFF);
			line.graphics.moveTo(0, stage.stageWidth / 2);
			line.graphics.lineTo(stage.stageWidth, stage.stageHeight/2);
			addChild(line);
			ball = new Sprite();
			ball.graphics.beginFill(0xFFFFFF);
			ball.graphics.drawCircle(20, stage.stageHeight/2, 10);
			ball.graphics.endFill();
			addChild(ball);
			obj = new Array();
			for (var j:Number = 0; j < 14; j++) {
				var Symbol:Sprite = new Sprite();
				Symbol.graphics.beginFill(Math.random() * 0xFFFFFF);
				Symbol.graphics.drawCircle(0, stage.stageHeight/2, 10);
				Symbol.name = String(obj.length);
				obj.push(Symbol);
			}
			
			for (var i:Number = 0; i < obj.length; i++) {
				obj[i].x = this.stage.stageWidth / 2;
				obj[i].y = this.stage.stageHeight / 2;
				this.addChild(obj[i]);
				}
			
			ball.addEventListener(MouseEvent.ROLL_OVER, onROver);
			ball.addEventListener(MouseEvent.ROLL_OUT, onROut);
			
			timer = new Timer(33);
			timer.addEventListener(TimerEvent.TIMER, loop);
			timer.start();
		}
		
		public function onROver(event:MouseEvent):void {
			rollovered = true;
			}
		
		public function onROut(event:MouseEvent):void {
			rollovered = false;
			}
		
		public function loop(event:TimerEvent):void {
			for (var i:Number = 0; i < obj.length; i++) {
				var koko:Point = new Point();
				if (rollovered) {
					if (i == 0) {
						koko.x = ball.x + 50;
						koko.y = ball.y ;
					}else {
						koko.x = obj[i - 1].x + 30;
						koko.y = obj[i - 1].y ;
						}
				}else {
					if (i == 0) {
						koko.x = this.stage.stageWidth + 140;
						koko.y = this.stage.stageHeight / 2 - 140;
					}else {
						koko.x = obj[i - 1].x;
						koko.y = obj[i - 1].y;
						}
					}
					obj[i].x += (koko.x - obj[i].x) / 4;
					obj[i].y += (koko.y - obj[i].y) / 4;
				}
			}
	}
	
}