我有一个标有'blueButton'的按钮,我想使用匿名函数来处理点击,如下所示:
blueButton.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void {
trace( "-----click detected-----" );
// now do other stuff
});
问题是,每次点击多次调用点击处理程序。调用的次数似乎是随机的(有时是2次,有时是4次,有时是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;