NOW LOADINGっぽい感じにしたかった

by kamip
...
@author kamip
http://d.hatena.ne.jp/kamip/
クリックした場所でくるくる回転
♥2 | Line 96 | Modified 2009-10-15 11:35:36 | MIT License
play

ActionScript3 source code

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

package  
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
	/**
	 * ...
	 * @author kamip
	 * http://d.hatena.ne.jp/kamip/
	 * クリックした場所でくるくる回転
	 */
	public class LoadingImage extends Sprite
	{
	    Wonderfl.capture_delay( 10 );
		public var _size:Number = 25;
		public var _speed:Number = 5;//逆回転すると遥かかなたへ・・・
		private var _cx:Number = stage.stageWidth / 2 - _size / 2;
		private var _cy:Number = stage.stageHeight / 2 - _size / 2;
		
		public function LoadingImage() 
		{
			var alpha:Number = 1.0;
			for (var i:int = 1; i < 5; i++){
				var sprite:Sprite = makeSprite((i - 1) * 25, 0x80FF00, String(i), alpha);
				sprite.addEventListener(Event.ENTER_FRAME, renderSprite);
				alpha = alpha - 0.2;
			}
			stage.addEventListener(MouseEvent.CLICK, onStageClick);
		}
		
		public function onStageClick(e:MouseEvent):void {
			//_size = Math.round (Math.random () * 200) + 50;
			_cx = mouseX - _size / 2;
			_cy = mouseY - _size / 2;
		}
		
		public function makeSprite(length:Number, color:int, number:String, alpha:Number):Sprite {
			var sp:Circle = new Circle(length, color, number, alpha);
			sp.name = number;
			sp.alpha = alpha;
			addChild(sp);
			sp._length = length;
			var result:Array = lengthToPoint(length);
			sp.x = result[0];
			sp.y = result[1];
			return sp;
		}
		
		public function renderSprite(e:Event):void {
			var sp:Circle = e.target as Circle;// asしないと使えない予感
			var length:Number = sp._length + _speed;
			var number:Number = e.target.name;
			var result:Array = new Array();
			
			result = lengthToPoint(length);
			
			sp.x = result[0];
			sp.y = result[1];
			
			if (length >= _size * 4) {
				sp._length = 0;
			}else{
				sp._length = length;
			}
		}
		
		public function lengthToPoint(length:Number):Array {
			var result:Array = new Array();
			var x:Number = 0;
			var y:Number = 0;
			if (length <= _size) {
				x = length;
				y = 0;
			}else {
				if (length >= _size && length < _size * 2) {
					x = _size;
					y = length - _size;
				}else if( length >= _size * 2 && length < _size * 3) {
					x = _size - (length - _size * 2);
					y = _size;
				}else if( length >= _size * 3 && length < _size * 4){
					x = _size - _size;
					y = _size - (length - _size * 3);
				}
			}
			x += _cx;
			y += _cy;
			result.push(x);
			result.push(y);
			return result;
		}
		
	}
	

	
}

	import flash.display.Sprite;
	class Circle extends Sprite{
		public var _circle:Sprite;
		public var _length:Number;
		public function Circle(length:Number, color:int, number:String, alpha:Number) {
			_circle = new Sprite();
			var _circle:Sprite = new Sprite();
			this.graphics.beginFill(color);
			this.graphics.drawCircle(0, 0, 10);
			this.graphics.endFill();
			_length = length;
		}
		
		public function get length():Number { return _length; }
		
		public function set length(value:Number):void 
		{
			_length = value;
		}
	}