ActionScript 3 - 每次单击多次调用匿名函数作为单击处理程序

时间:2010-08-16 19:07:37

标签: flash actionscript-3 actionscript

我有一个标有'blueButton'的按钮,我想使用匿名函数来处理点击,如下所示:

blueButton.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
 trace( "-----click detected-----" );
 // now do other stuff
});

问题是,每次点击多次调用点击处理程序。调用的次数似乎是随机的(有时是2次,有时是4次,有时是3次等)。我可能会在代码中遗漏某些内容,或者我将按钮设置错误了吗?

我也注意到它似乎总是在第一次点击时被调用一次。第一次点击后,它开始被称为额外的时间,也许这与它有关?

提前感谢任何帮助

3 个答案:

答案 0 :(得分:3)

从哪里调用blueButton.addEventListener? 有可能多次调用该行,然后可以添加多个侦听器,尤其是在某些视图状态onShow代码之后添加它时。 尝试在blueButton.addEventListener上方添加trace(“----添加事件监听器----”),并确保只显示一次。

另外,您是否尝试过除了trace()语句之外的任何代码?那还是个问题吗?  您可以通过删除事件侦听器中的所有其他代码来拆分不同的代码。 “其他东西”可能会触发运行代码,再次添加按钮事件监听器。

答案 1 :(得分:0)

我会尝试解决这个问题:

1)确保设置blueButton.mouseChildren = false。在某些鼠标事件上,如果指定的DisplayObject中包含其他DisplayObject子节点,则flash将为每个子节点分配鼠标事件。

2)不要使用匿名函数,因为偶尔使用Flash时Flash会有点怪异。我遇到了和以前一样的问题,一旦我停止使用匿名功能,问题就消失了。

答案 2 :(得分:0)

您也可以尝试

event.stopImmediatePropagation;