我有一个包含许多图像的容器。我不想在每个图像上添加点击和其他鼠标事件的监听器,而只想在图像的父级上监听这些事件。
这可能吗?
答案 0 :(得分:7)
container.addEventListener(MouseEvent.CLICK, clickHandler);
private function clickHandler(e:MouseEvent):void {
trace(e.currentTarget); // references container
trace(e.target); //references container's child or container itself depending on what has been clicked
}
答案 1 :(得分:1)
如果我正确理解你的问题,这是完全可能的。所以假设你有类似的东西:
parent.addChild(new Child());
parent.addChild(new Child());
parent.addChild(new Child());
parent.addChild(new Child());
然后你应该能够将事件监听器绑定到父级:
parent.addEventListener(MouseEvent.CLICK, handleClick);
然后你的处理程序应该看起来像
private function handleClick(e:MouseEvent) {
// cast the target of the event as the correct class
var clickedChild:Child = Child(e.target);
// Do whatever you want to do.
}
您还可以将此与addEventListener的useCapture
参数结合使用,以将事件附加到事件的捕获端而不是冒泡端。并且还可以在Event上使用.stopPropagation()
方法来阻止任何其他事件处理程序的触发......
但很难说如果你不需要了解更多关于你想要做什么就需要使用那些。但希望这会给你一个正确的方向。