7

我试图这样做:

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);

但它不工作。

它适用于

panel.addEventListener(MouseEvent.CLICK,showEditPopup);

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

4

2 回答 2

16

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

panel.doubleClickEnabled=true; 

然后你可以这样做:

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);
于 2012-04-30T11:53:09.463 回答
1

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

首先,您必须像这样启用双击:

panel.addEventListener(MouseEvent.DOUBLE_CLICK,showEditPopup);

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

panel.addEventListener(MouseEvent.CLICK,showEditPopup);

那么这就是函数,一次只与 1 个交互:

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 来显示一个工具提示。但后来我想双击卡片将其放置/从牌组中移除。但它不起作用,因为附加到该影片剪辑的技能中有鼠标事件。所以我不得不禁用它们并找到另一种方法来做到这一点。因为在 mousechildren 设置为 false 的情况下工具提示没有显示,我别无选择让它绕过这些事件。

这就是为什么计时器解决方案确实是一个更好的主意的原因。双击的等待时间最多可以增加 1 秒。它不会影响人,甚至适合最慢的家伙;)

于 2017-02-10T23:18:05.173 回答