forked from: forked from: forked from: クルクル

by umhr
flashとおやつの会の宿題:第一回02
♥0 | Line 54 | Modified 2010-04-29 23:31:28 | MIT License
play

ActionScript3 source code

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

// forked from mikelito33bdx's forked from: forked from: クルクル
// forked from umhr's forked from: クルクル
// forked from mikelito33bdx's クルクル
//flashとおやつの会の宿題:第一回02
package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.text.TextField;
	
	/**
	 * ...
	 * @author mikelito33bdx
	 */
	public class Main extends Sprite {
		
		private var _btn:Sprite;
		private var _circles:Array;
		private var _rotations:Array;
		
		public function Main():void {
			//_circles = new Array();と同じ意味。
			//こちらの方が処理が軽いらしい
			_circles = [];
			_rotations = [];
			
			//ボタン用テキスト
			var tf:TextField = new TextField();
			tf.text = "CLICK";
			tf.textColor = 0x000000;
			tf.selectable = false;
			tf.x = stage.stageWidth / 2 - 20;
			tf.y = stage.stageHeight / 2 - 10;
			addChild(tf);
			
			//ボタン
			_btn = new Sprite();
			_btn.graphics.beginFill(0x000000, 0.5);
			_btn.graphics.drawCircle(stage.stageWidth / 2, stage.stageHeight / 2, 30);
			_btn.graphics.endFill();
			_btn.buttonMode = true;
			addChild(_btn);	
			//クリックで円を描く
			_btn.addEventListener(MouseEvent.CLICK, onClick);
			
			this.addEventListener(Event.ENTER_FRAME, onEnter);
		}
		
		private function onClick(e:MouseEvent):void {
			var myColor:Number = Math.random();
			var myAlpha:Number = Math.random()*0.5 + 0.3;
			//circleの描画位置を修正
			var myPosX:Number = Math.random() * stage.stageWidth - Math.random() * stage.stageWidth / 2;
			var myPosY:Number = Math.random() * stage.stageHeight - Math.random() * stage.stageHeight / 2;
			var circle:Sprite = new Sprite();
			circle.graphics.beginFill(myColor * 0xFFFFFF, myAlpha);
			circle.graphics.drawCircle(myPosX, myPosY, 10);
			circle.graphics.endFill();
			circle.x = stage.stageWidth / 2;
			circle.y = stage.stageHeight / 2;
			//一番奥にaddChildする
			this.addChildAt(circle,0);
			//SpriteをArrayに入れる。
			_circles.push(circle);
			//一回のEnterFrameあたりの回転角度も入れる
			_rotations.push(Math.random());
		}
		
		private function onEnter(e:Event):void {
			var n:int = _circles.length;
			//大きさを徐々に
			var _myScale:Number = Math.random()*0.001;
			for (var i:int = 0; i < n; i++ ) {
				_circles[i].rotation += _rotations[i];
				_circles[i].scaleX += _myScale;
				_circles[i].scaleY += _myScale;
				//_btnを常に一番手前に表示
				//this.setChildIndex(_btn, n);
			}
		}
	}
}