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.stick,而不是duplicateObject.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 回答