我有一个MOUSE_DOWN处理程序,它在子对象上创建一个CLICK事件监听器。当然,只要释放鼠标按钮,如果碰巧在子对象上,就会触发CLICK事件。
我很失望地发现event.stopImmediatePropagation不会在注意MOUSE_DOWN作为其检测周期的一部分时中断CLICK事件。它有意义但它仍然......令人失望。
MouseEvent.CLICK包括检测对象上的MOUSE_DOWN,然后如果它后面跟着MOUSE_UP而不离开对象,则会触发事件。我曾希望通过取消MOUSE_DOWN事件,它会清除CLICK缓冲区,但没有这样的土豆,唉。
那里有什么诡计?这可能都是用一个标志和几个MOUSE_UP和MOUSE_DOWN处理程序来处理的,但dang,一点点的努力...... Buehler?
答案 0 :(得分:1)
如果我理解正确,您应能够通过以下方式纠正此行为:
而不是MOUSE_DOWN处理程序,有一个CLICK处理程序。
该CLICK处理程序将删除与其关联的侦听器,并创建一个 new CLICK侦听器,并引用您希望成为新CLICK处理程序的函数。
IE:
//on CreationComplete, or wherever you are adding the MOUSE_DOWN listener
addEventListener(MouseEvent.CLICK, handler1);
private function handler1(aEvent:MouseEvent):void
{
removeEventListener(MouseEvent.CLICK, handler1);
addEventListener(MouseEvent.CLICK, handler2);
}
答案 1 :(得分:0)