[Tweener]回る増える円

by stenpel
...
@author stenpel
クルクル回る円
クリックするたびに増える
♥0 | Line 89 | Modified 2010-05-20 02:55:46 | MIT License
play

ActionScript3 source code

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

package 
{
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import caurina.transitions.Tweener;
	
	/**
	 * ...
	 * @author stenpel
	 * クルクル回る円
	 * クリックするたびに増える
	 */
	public class Main extends Sprite 
	{
		private var arrayObj:Array;
		private var container:Sprite;
		
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			initObject(2);
			stage.addEventListener(MouseEvent.CLICK, onMouseClick);
		}
		
		private function initObject(n:Number = 10):void {
			trace("<--initObject-->");
	
			var r:uint = 100;
			var radian:Number = 2 * Math.PI / n;
			arrayObj = new Array();
			container = new Sprite();
	
			for (var i:int = 0; i < n; i++) {
				var sp:Shape = new Shape();
				sp.graphics.beginFill(0);
				sp.graphics.drawCircle(0, 0, 10);
				sp.graphics.endFill();
				arrayObj.push(sp);
				container.addChild(sp);
				sp.x = r * Math.sin(i * radian);
				sp.y = r * Math.cos(i * radian);
			}

			container.addEventListener(Event.ADDED_TO_STAGE, onAddStageContainer);
			addChild(container);
		}
		
		private function onAddStageContainer(e:Event):void 
		{
			trace("<--onAddStageContainer-->");
			
			var sp:Sprite = e.currentTarget as Sprite;
			sp.removeEventListener(Event.ADDED_TO_STAGE, onAddStageContainer);
			sp.x = stage.stageWidth / 2;
			sp.y = stage.stageHeight / 2;
			
			sp.addEventListener(Event.ENTER_FRAME, loop);
		}
		
		private function loop(e:Event):void 
		{
			var sp:Sprite = e.currentTarget as Sprite;
			sp.rotation += 3;
		}
		
		private function onMouseClick(e:MouseEvent):void 
		{
			trace("<--onMouseClick-->");
			for (var i:int = 0; i < arrayObj.length; i++) {
				Tweener.addTween(arrayObj[i], { x:0, y:0, time:.9, transition:"easeNone"} );
			}
			
			afterClick();
		}
		
		private function afterClick():void
		{
			trace("<--afterClick-->");
			var shape:Shape = new Shape();
			shape.graphics.beginFill(0);
			shape.graphics.drawCircle(0, 0, 10);
			shape.graphics.endFill();
			
			arrayObj.push(shape);
			
			ReassignObject();
		}
		
		private function ReassignObject():void {
			trace("<--ReassignObject-->");
			var n:uint = arrayObj.length;
			var l:uint = 100;
			var radian:Number = 2 * Math.PI / n;
			
			container.addChild(arrayObj[arrayObj.length-1]);
			
			for (var i:int = 0; i < n; i++) 
			{
				var obj:Shape = arrayObj[i] as Shape;
				var posX:Number = l * Math.sin(i * radian);
				var posY:Number = l * Math.cos(i * radian);
				Tweener.addTween(obj, { x:posX, y:posY, time:.4, delay:.9, transition:"easeNone" } );
			}
			
		}
		
	}
	
}