1

我想这样做:

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

上面是我写给按钮的代码。

我添加了 eventListener 但结果仍然没有。

任何想法或正确的方法来做到这一点?

如果rightBtn有多个事件,如 MOUSE_OVER、MOUSE_OUT 怎么办?我可以只用 1 个命令将它们全部删除吗?

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")
}
4

2 回答 2

4

你的代码是错误的。根据 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);
于 2012-07-31T10:23:58.333 回答
4

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

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

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

于 2012-07-31T10:26:41.030 回答