flash on 2009-5-15

by kohie_yamashima
♥0 | Line 52 | Modified 2009-05-15 01:36:04 | MIT License
play

ActionScript3 source code

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

package {
	import flash.display.DisplayObjectContainer;
	import flash.display.Sprite;
	import flash.display.Graphics;
	import flash.events.Event;
	import flash.events.MouseEvent;

	public class Ripple {
		var container:DisplayObjectContainer;
		//コンストラクタ
		function Ripple(theContainer:DisplayObjectContainer) {
			container = theContainer;
			container.stage.addEventListener(MouseEvent.MOUSE_DOWN,makeRipple);
			container.stage.addEventListener(MouseEvent.MOUSE_MOVE,makeRipple);
		}
		//リングを4個作る
		function makeRipple(event:MouseEvent):void {
			for (var i:uint=1; i<=4; i++) {
				//リングごとにスプライトを作る
				var rippleSprite:Sprite = makeSprite();
				//リングを描く
				drawRing(rippleSprite);
			}
		}
		//スプライトを作る
		function makeSprite():Sprite {
			//表示オブジェクトの作成とコンテナへの登録
			var sp:Sprite = new Sprite();
			container.addChild(sp);
			sp.x = container.stage.mouseX;
			sp.y = container.stage.mouseY;
			//イベント設定
			sp.addEventListener(Event.ENTER_FRAME,onEnterFrame);
			return sp;
		}
		//リングを描く
		function drawRing(sp:Sprite):void {
			var thickness:uint=1;
			var color:uint=Math.random()*0x666666;
			var alpha:Number=1.0;
			var pixelHinting:Boolean = false;
			var scaleMode:String = "none";
			var cr:Number=1 + Math.random()*2;
			sp.graphics.lineStyle(thickness,color,alpha,pixelHinting,scaleMode);
			sp.graphics.drawCircle(0,0,cr);
		}
		//スプライトのアニメーションを行う
		function onEnterFrame(event:Event):void {
			var sp:Sprite=event.target as Sprite;
			if (sp.alpha > 0) {
				sp.scaleX+= 2;
				sp.scaleY+= 2;
				sp.alpha-= 0.05;
			} else {
				//alphaが0になったので消去
				sp.graphics.clear();
				sp.removeEventListener(Event.ENTER_FRAME,onEnterFrame);
				container.removeChild(sp);
				sp = null;
			}
		}
	}
}