2

我正在使用 flex4 中的自定义列表组件。我创建了一个自定义 ItemRenderer,一切看起来和工作都如我所愿,但我正在尝试获取双击事件。我正在接收 key down 和所有其他事件,但不是这个。我已经启用了对 List 组件的双击

 doubleClickEnabled="true"

我添加了一个事件监听器

ListEvent.ITEM_DOUBLE_CLICK

我可以随意点击,只是不会触发事件。我可以使用任何建议。谢谢。

4

2 回答 2

5

你想听MouseEvent.DOUBLE_CLICK,然后你可以找出点击了什么event.target

于 2010-01-12T19:07:47.873 回答
1

因为这个,我把头撞在墙上好几个小时!Adobe 在组件功能方面正在倒退!无论如何,我找到了一个不错的解决方案:

我们将 DOUBLE_CLICK 事件监听器添加到列表的 dataGroup 中,它是项目的容器:

list.dataGroup.doubleClickEnabled = true;   
list.dataGroup.addEventListener(MouseEvent.DOUBLE_CLICK, handleDoubleClick);

现在它工作得很好,不会引起滚动条的双击,但会引起列表中没有项目的开放空间(dataGroup 本身)的双击。所以我们只在 e.target != dataGroup 时继续事件处理程序:

private function handleDoubleClick(e:MouseEvent):void
{
  if (list.dataGroup != e.target)
  {
    // double click code
  }
}

现在它工作正常:) 唷!我们不应该在这些东西上浪费时间...


糟糕的解决方案 --> 不要尝试将 e.target 的类与列表中 itemRenderer 的类进行比较,因为有时 e.target 是项目的实际标签。

于 2011-11-18T13:49:34.020 回答