0

同じクラス内にクラスの新しいインスタンスを作成しようとしています。インスタンスを作成した後、MouseDown リスナーを削除しようとしています。

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();
        }
    }
}
4

1 に答える 1

0

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

追加してみてください:

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

あなたのクラスに、そして呼び出す代わりに

duplicateObject.removeEventListener(MouseEvent.MOUSE_DOWN,stick);

電話

duplicateObject.removeStick();

または、おそらく呼び出しを次のように変更することもできます

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

しかし、私は最初のオプションを好みます。

于 2012-05-11T12:54:25.427 に答える