2012-05-11 5 views
0

同じクラス内にクラスの新しいインスタンスを作成しようとしていますが、インスタンスを作成した後、MouseDownリスナーを削除しようとしました。オブジェクトの新しいインスタンスでremoveEventListenerが機能しないのはなぜですか?

package com.objects{ 
    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 
    public class StickDragDrop extends NumButton { 
     public var duplicateObject:MovieClip; 
     public function StickDragDrop() { 
      init(); 
     } 
     public function init() { 
      addEventListener(MouseEvent.MOUSE_DOWN,stick); 
     } 
     public function stick(e:MouseEvent) { 
      duplicateObject=new e.currentTarget.constructor 
      addChild(duplicateObject); 
      duplicateObject.startDrag(); 
      duplicateObject.removeEventListener(MouseEvent.MOUSE_DOWN,stick); 
      duplicateObject.addEventListener(MouseEvent.MOUSE_DOWN,unStick); 
     } 
     public function unStick(e:MouseEvent) { 
      stopDrag(); 
     } 
    } 
} 
+0

達成しようとしていることについてもう少し説明できますか?まず、対象オブジェクトに重複オブジェクトを追加する理由を理解できません。 – Art

答えて

0

あなたはthis.stick、ないduplicateObject.stickを呼び出すと、そのイベントリスナーが存在しないduplicateObjectのイベントリスナーを削除しようとしています。

を増やしてみてください:

duplicateObject.removeStick(); 

またコール

duplicateObject.removeEventListener(MouseEvent.MOUSE_DOWN,stick); 

を呼び出すのではなく、自分のクラスに

public function removeStick() { 
    removeEventListener(MouseEvent.MOUSE_DOWN,stick) 
} 

、そして、あなたはおそらくへの呼び出しを変更することができます

duplicateObject.removeEventListener(MouseEvent.MOUSE_DOWN,duplicateObject.stick); 

しかし、私は最初の選択肢を優先します。

関連する問題