我正在使用 flex4 中的自定义列表组件。我创建了一个自定义 ItemRenderer,一切看起来和工作都如我所愿,但我正在尝试获取双击事件。我正在接收 key down 和所有其他事件,但不是这个。我已经启用了对 List 组件的双击
doubleClickEnabled="true"
我添加了一个事件监听器
ListEvent.ITEM_DOUBLE_CLICK
我可以随意点击,只是不会触发事件。我可以使用任何建议。谢谢。
我正在使用 flex4 中的自定义列表组件。我创建了一个自定义 ItemRenderer,一切看起来和工作都如我所愿,但我正在尝试获取双击事件。我正在接收 key down 和所有其他事件,但不是这个。我已经启用了对 List 组件的双击
doubleClickEnabled="true"
我添加了一个事件监听器
ListEvent.ITEM_DOUBLE_CLICK
我可以随意点击,只是不会触发事件。我可以使用任何建议。谢谢。
你想听MouseEvent.DOUBLE_CLICK
,然后你可以找出点击了什么event.target
。
因为这个,我把头撞在墙上好几个小时!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 是项目的实际标签。