Actionscript 3 如何在操作脚本中启用双击?

Actionscript 3 如何在操作脚本中启用双击?,actionscript-3,mouseevent,Actionscript 3,Mouseevent,我试着这样做: panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup); 但它不起作用 这对我来说很好 panel.addEventListener(MouseEvent.CLICK,showEditPopup); 所以,我想我必须先启用双击。需要相关帮助。在执行此操作之前,您必须为面板启用双击: panel.doubleClickEnabled=true; 然后你可以做: panel.addEventListener(

我试着这样做:

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);
但它不起作用

这对我来说很好

panel.addEventListener(MouseEvent.CLICK,showEditPopup);

所以,我想我必须先启用双击。需要相关帮助。

在执行此操作之前,您必须为面板启用双击:

panel.doubleClickEnabled=true; 
然后你可以做:

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);

今天早上我试图在游戏中添加双击时遇到了这个问题。 这就是我发现的

首先,您必须启用双击,如下所示:

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);
panel.addEventListener(MouseEvent.CLICK,showEditPopup);
您还可以在同一功能上添加singe CLICK,以防止双击时出现两次单击,如下所示:

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);
panel.addEventListener(MouseEvent.CLICK,showEditPopup);
那么这就是函数,一次只与一个函数进行交互:

function showEditPopup(e:MouseEvent) {
  if (e.type == "click") {
    //single click
  } else if (e.type == "doubleClick") {
    //double click
  }
}
现在出现了两个问题。首先,您必须在侦听器之前启用如下双击:

panel.enableDoubleClick = true;
更糟糕的是,如果显示对象绑定到另一个具有鼠标事件的显示对象,则必须为子对象禁用这些事件,以便双击可以工作。像这样:

panel.mouseChildren = false;
这对我来说很糟糕,因为这就是我所做的。 创建了一张带有技能的卡,技能让mouseevent.move_显示工具提示。但是我想双击卡片,将其放置/从卡片组中移除。但它不起作用,因为附在电影唇上的技能中包含了mouseevent。所以我不得不禁用它们,并找到另一种方法。因为工具提示并没有显示,而mousechildren设置为false,我没有选择让它绕过这些事件


这就是为什么定时器解决方案看起来确实是一个更好的主意。双击的等待时间可以达到1秒。它不会影响人们,甚至适合最慢的人;)

注意,MouseEvent.CLICK也会触发两次。我想知道这个API设计背后的原理是什么?为什么我们不需要将
panel.clickEnabled=true
设置为一次单击和双击?在某些情况下,您可能还需要将
mouseChildren
设置为
false
,以便
双击Enabled
工作。