トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     親からの子制御(追加・削除)
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
kkk01
Åê¹ÆNo.38468
投稿日時: 2008-4-17 12:25
新米
居住地: 東京
投稿: 16
使用環境:
Re: 親からの子制御(追加・削除)
自己レスです。

調査を進めた結果、現象の回避はできました。

修正箇所は、Test用クラス TestDocument.as

【修正前】
  private function onAdd(e:MouseEvent):void{
   var test:Test = new Test();
   test.x = test.y = 50;
   
   addEventListener( Test.CLOSE, function actionA( e:Event ):void{
    removeEventListener( Test.CLOSE, actionA);
    removeChild( test );
   });
   
   addEventListener( Test.OK, function actionB( e:Event ):void{
    removeEventListener( Test.OK, actionB);
    removeChild( test );
   })
   addChild( test );
  }


【修正後】
  private function onAdd(e:MouseEvent):void{
   var test:Test = new Test();
   test.x = test.y = 50;
   
   addEventListener( Test.CLOSE, actionA );
   addEventListener( Test.OK, actionB );

   function actionA( e:Event ):void{
    removeEventListener( Test.CLOSE, actionA);
    removeEventListener( Test.OK, actionB);
    removeChild( test );
   };
   
   function actionB( e:Event ):void{
    removeEventListener( Test.CLOSE, actionA);
    removeEventListener( Test.OK, actionB);
    removeChild( test );
   };

   addChild( test );
  }


イベントハンドラを明示的に削除していなかったので
インスタンスへの参照が残っていたのですね。。。

同じシンボルなのでインスタンスへの参照も
都度変わるかと誤認していましたが、
別インスタンスなので参照も異なるという、
結構当たり前の箇所が原因でした。

失礼致しました。
フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   親からの子制御(追加・削除) kkk01 2008-4-17 11:18
   » Re: 親からの子制御(追加・削除) kkk01 2008-4-17 12:25

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops