我正在尝试在同一个类中创建一个类的新实例,并在创建实例后尝试删除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();
}
}
}
答案 0 :(得分:0)
您正在尝试删除duplicateObject
的{{1}}事件侦听器,该事件侦听器将调用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);
但我更喜欢第一种选择。