自分自身のイベントと自分自身を削除する方法
ちょいと小ネタとしてFlexで自分自身のイベントと自分自身を削除する方法でっす。
あとはよろしく的な感じで書けるので管理が楽ちんです。
クリックするとちょいとアニメーションされてステージから削除されます。
http://moeten.info/flex/20080513_removeEvent/bin-release/main.html
ポイントは無名関数の場合は削除関数名を「arguments.callee」にします。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" viewSourceURL="srcview/index.html" backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#FFFFFF, #FFA2E8]"> <mx:Script> <![CDATA[ import mx.controls.Image; [Embed(source='heart.gif')] private var heart:Class //初期化関数 private function init():void{ //マウスクリックイベント作成 this.addEventListener( MouseEvent.CLICK , onClick ); } //マウスクリックでオブジェ作成 private function onClick(e:Event):void{ //オブジェの作成 var img:Image = new Image(); img.source = new heart() as Bitmap img.x = this.mouseX; img.y = this.mouseY; this.addChild(img); //アニメーションのイベントを作成 img.addEventListener(Event.ENTER_FRAME , myAnime ); } //個々のアニメーションイベント private function myAnime( e:Event ):void{ var im:Image = e.target as Image; im.scaleX += 0.1; im.scaleY += 0.1; im.alpha -= 0.01; im.rotation += 10; //もし透明度が0になったらイベントとステージから削除 if( im.alpha <= 0 ){ im.removeEventListener( Event.ENTER_FRAME , arguments.callee ); this.removeChild( im ); } } ]]> </mx:Script> </mx:Application>