Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 取消MouseEvent.MouseEvent.MOUSE\u按下后单击_Actionscript 3_Events_Stoppropagation - Fatal编程技术网

Actionscript 3 取消MouseEvent.MouseEvent.MOUSE\u按下后单击

Actionscript 3 取消MouseEvent.MouseEvent.MOUSE\u按下后单击,actionscript-3,events,stoppropagation,Actionscript 3,Events,Stoppropagation,我有一个鼠标按下处理程序,它在子对象上创建一个点击事件监听器。自然,只要释放鼠标按钮,如果恰好在子对象上方,单击事件就会触发 我很失望地发现,event.stopImmediatePropagation不会中断CLICK事件,使其无法在检测周期内注册鼠标。这是有道理的,它没有,但仍然。。。令人失望 MouseEvent.CLICK包括在对象上检测鼠标,然后如果它后面跟着一个没有离开对象的鼠标,则触发事件。我曾希望通过取消鼠标按下事件,可以清除点击缓冲区之外的内容,但可惜没有这样的土豆 有什么窍门

我有一个鼠标按下处理程序,它在子对象上创建一个点击事件监听器。自然,只要释放鼠标按钮,如果恰好在子对象上方,单击事件就会触发

我很失望地发现,event.stopImmediatePropagation不会中断CLICK事件,使其无法在检测周期内注册鼠标。这是有道理的,它没有,但仍然。。。令人失望

MouseEvent.CLICK包括在对象上检测鼠标,然后如果它后面跟着一个没有离开对象的鼠标,则触发事件。我曾希望通过取消鼠标按下事件,可以清除点击缓冲区之外的内容,但可惜没有这样的土豆


有什么窍门吗?这一切都可以用一个旗子和更多的鼠标上下处理程序来处理,但该死的,有点努力的味道。。。Buehler?

停止事件的传播只会阻止事件在显示列表中流动,而不会反转时间、取消或注销事件


如果要取消事件,只需删除事件侦听器。

如果我理解正确,您应该能够通过以下方式更正此行为:

使用单击处理程序代替鼠标按下处理程序

该单击处理程序将删除与其关联的侦听器,并创建一个新的单击侦听器,该侦听器引用您希望成为新的单击处理程序的函数

即:


在鼠标向上而不是向下时添加单击事件。您是否尝试过捕获容器中的单击,并根据在向下事件中可能触发的简单标志停止其传播?谢谢Sam。此解决方案与我当前使用的解决方案相同。但是,在功能上存在差异。从用户体验的角度来看,期望的效果是在鼠标按下时发生一个不同的事件,在随后的版本中发生另一个事件(但与鼠标按下的姿势不同)。换言之,你正在寻找一个鼠标下来-一些事情发生了;鼠标向上-什么也没发生;单击子元素-会发生其他情况。@Tom,好吧,您可以在“鼠标按下”处理程序中放置一个onCapture鼠标按下侦听器。然后,您可以停止该事件的传播,并删除鼠标启动处理程序中的侦听器。这应该可以满足您的要求。假设在鼠标到达目标阶段之前停止鼠标会阻止单击。是的,我想知道运行时引擎是将它们视为两种不同类型的事件,还是同一事件的两个方面。我猜可能是前者。删除事件侦听器不会取消正在进行的事件。
//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);
}