如何在动作脚本中启用双击?

时间:2012-04-30 11:50:54

标签: actionscript-3 mouseevent

我试着这样做:

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);

但它不起作用。

适用于

panel.addEventListener(MouseEvent.CLICK,showEditPopup);

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

2 个答案:

答案 0 :(得分:14)

您必须先为您的面板启用双击:

panel.doubleClickEnabled=true; 

然后你可以这样做:

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);

答案 1 :(得分:1)

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

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

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);

您还可以在同一功能上添加单击CLICK,以防止双击时发生两次点击,如下所示:

panel.addEventListener(MouseEvent.CLICK,showEditPopup);

然后这将是函数,一次与两个进行交互:

function showEditPopup(e:MouseEvent) {
  if (e.type == "click") {
    //single click
  } else if (e.type == "doubleClick") {
    //double click
  }
}

现在出现了2个问题。首先,你必须在听众之前启用这样的双击:

panel.enableDoubleClick = true;

然后更糟糕的是,如果显示对象绑定到另一个具有鼠标事件的显示对象,则必须为子节点禁用这些事件,以便双击工作。像这样:

panel.mouseChildren = false;

这对我不好,因为这就是我在做的事情。 创建了一个技能卡,技能有mouseevent.move_over来显示工具提示。但后来我想双击卡片将其放置/从甲板上取下。但它没有奏效,因为附在那部电影剪辑上的技能在其中有鼠标。所以我不得不禁用它们并找到另一种方法来实现它。因为工具提示没有显示,小鼠的孩子被设置为假,我没有选择让它绕过这些事件。

这就是为什么计时器解决方案确实看起来更好的原因。你可以在双击的等待时间内达到1秒。它不会影响人,甚至适合最慢的家伙;)