8/21
削除が面倒 - AS3
むっずいわー。
毎回これ言ってる気がする。リアルでも。
addChild、removeChild、addEventListener、removeEventListenerでちょっと悩み中。
通常に使う分は全く問題ないんだけど、正しく管理しないとremoveEventListenerの消し忘れとかでメモリーリークとかすぐにおこしそうで><
けども管理が面倒だーっっっってなわけで試行錯誤してます。
もうため息しかでねぇ。。
Actionscript 3 :
- // フレームに記述
- var obj:Sprite = new Sprite();
- var g = obj.graphics;
- g.lineStyle(1,0x000000,1);
- g.beginFill(0x000000,1);
- g.drawRect(10,10,100,100);
- addChild(obj);
- obj.addEventListener(Event.ENTER_FRAME, hogeEnter);
- obj.addEventListener(MouseEvent.MOUSE_DOWN, hogeMouseDown);
- function hogeEnter(evt:Event){
- trace("hogeEnter!");
- }
- function hogeMouseDown(evt:Event){
- trace("hogeMouseDown!");
- evt.target.removeEventListener(MouseEvent.MOUSE_DOWN, hogeMouseDown);
- removeChild(obj);
- }
1つオブジェクトを作ってそれにENTER_FRAMEとMOUSE_DOWNのイベントリスナーを登録します。
そしてMOUSE_DOWNでオブジェクトを消去するだけのプログラムです。
ついでにMOUSE_DOWNのイベントリスナーも消去してます。
でもこれだとENTER_FRAMEは走りっぱなしになるんです。
あたりまえっちゃー当たり前。消してないんだもんなーハハハw
こういうことは避けないと何にせよ問題が出てくるって話ですよ。
「ENTER_FRAMEも消せばいいやん」
おっしゃるとおりでございます!!
まぁ通常理解している範囲だと確実に消しますが、
も し も !
の時の為の保険みたいなもんがほしいわけです。
で、今のところ答えは無い(´-`)
けど、これでいける?ってのは一応ある。
Event.REMOVED_FROM_STAGE
このイベントリスナーを登録したオブジェクトが削除された場合に通知してくれる。
しかも親オブジェクト内に子オブジェクトがある場合で、親を削除した場合に子にも通知してくれる?と思う。。。
これはもうちょい検証しないと分からない。
とりあえず徐々にですが前進しとります。
//----
なんとなく作ってるもの。現在表示っつーかaddChildした物の一覧が見れる。
機能を付加したらなかなか面白いかな。
※2008/08/24 追記
Event.REMOVED_FROM_STAGEを追加したオブジェクトを消すとイベントが走るのでうまい具合にスクリプトを組めばよさそうです。
子オブジェクトにEvent.REMOVED_FROM_STAGEを追加し、親オブジェクトを消した場合でもイベントが走りました。
2008/8/21 - 2:43 | コメント (0) | トラックバック(0)
Category : FLASH AS3
TrackBack : http://nashiko.net/blog/1066/trackback





![Track: Don't Stop ([ELMIO remix]
Artist: i-dep
Album: CAFE aperitivo 4~Ever green~
Genre: Electronica/Dance](http://ecx.images-amazon.com/images/I/31KAKSKcEjL._SL160_.jpg)

コメントはまだありません。