Actionscript 3 是否可以检测addEventListener,然后将其删除?

Actionscript 3 是否可以检测addEventListener,然后将其删除?,actionscript-3,flash,event-listener,Actionscript 3,Flash,Event Listener,我想这样做: if (rightBtn.addEventListener(MouseEvent.CLICK,goRight4)) { rightBtn.removeEventListener(MouseEvent.CLICK,goRight4); trace("YES") } else{trace("NO")} 上面是我写在按钮上的代码 我已经添加了eventListener,但结果仍然是trace NO 有什么想法或正确的方法来做这件事吗 如果右侧BTN有多个事件,如鼠标悬停、鼠标悬停,该怎

我想这样做:

if (rightBtn.addEventListener(MouseEvent.CLICK,goRight4))
{
rightBtn.removeEventListener(MouseEvent.CLICK,goRight4);
trace("YES")
}
else{trace("NO")}
上面是我写在按钮上的代码

我已经添加了eventListener,但结果仍然是trace NO

有什么想法或正确的方法来做这件事吗

如果右侧BTN有多个事件,如鼠标悬停、鼠标悬停,该怎么办?我可以用一个命令将它们全部删除吗

rightBtn.addEventListener(MouseEvent.CLICK,goRight4)
rightBtn.addEventListener(MouseEvent.MOUSE_OVER,goRightOver)
rightBtn.addEventListener(MouseEvent.MOUSE_OUT,goRightOut)

if (rightBtn.addEventListener(MouseEvent.CLICK,goRight4))
{
rightBtn.removeEventListener(MouseEvent.CLICK,goRight4);
rightBtn.removeEventListener(MouseEvent.MOUSE_OVER,goRightOver);
rightBtn.removeEventListener(MouseEvent.MOUSE_OUT,goRightOut);
trace("YES")
}
else{
trace("NO")
}

你的代码错了。根据AS3语言参考,
addEventListener()
返回void。如果要检查实例是否附加了侦听器,必须使用
hasEventListener()

if (rightBtn.hasEventListener(MouseEvent.CLICK)) {
    rightBtn.removeEventListener(MouseEvent.CLICK, goRight4);
    trace("YES");
} else {
    trace("NO");
}
但是删除事件侦听器的最佳方法是在不知道它是否已附加到实例的情况下删除它

// Will not throw any error even if no listener was attached.
rightBtn.removeEventListener(MouseEvent.CLICK, goRight4);

你的代码错了。根据AS3语言参考,
addEventListener()
返回void。如果要检查实例是否附加了侦听器,必须使用
hasEventListener()

if (rightBtn.hasEventListener(MouseEvent.CLICK)) {
    rightBtn.removeEventListener(MouseEvent.CLICK, goRight4);
    trace("YES");
} else {
    trace("NO");
}
但是删除事件侦听器的最佳方法是在不知道它是否已附加到实例的情况下删除它

// Will not throw any error even if no listener was attached.
rightBtn.removeEventListener(MouseEvent.CLICK, goRight4);

您可以使用
hasEventListener()
检查对象是否添加了事件侦听器,如下所示:

if(rightBtn.hasEventListener(MouseEvent.CLICK))
{
    rightBtn.removeEventListener(MouseEvent.CLICK, goRight4);
    trace("YES");
}
else
{
    trace("NO");
}

您会注意到,
hasEventListener
函数只有一个参数,即事件。不过,在大多数情况下这是可以的,因为一个事件可能没有多个侦听器函数。

您可以使用
hasEventListener()
检查对象是否添加了事件侦听器,如下所示:

if(rightBtn.hasEventListener(MouseEvent.CLICK))
{
    rightBtn.removeEventListener(MouseEvent.CLICK, goRight4);
    trace("YES");
}
else
{
    trace("NO");
}

您会注意到,
hasEventListener
函数只有一个参数,即事件。不过,在大多数情况下这是可以的,因为您可能不会为一个事件使用多个侦听器函数。

对,如果对象一开始没有侦听事件,则调用
removeEventListener()
是无害的。正如@puggsoy的回答中所述,有时使用
hasEventListener()
会愚弄您,因为如果其他类添加了事件侦听器,该方法将返回true。我对两个答案都投了赞成票:)对,如果对象一开始没有侦听事件,那么调用
removeEventListener()
是无害的。正如@puggsoy的回答中所述,有时使用
hasEventListener()
会愚弄您,因为如果其他类添加了事件侦听器,该方法将返回true。我把两个答案都投了赞成票:)