2012-02-21 37 views

回答

2

冒泡导致调度事件继续被分派到显示树上,直到它到达舞台。这在各种情况下都很有用。

例如:假设您在父级DisplayObject中有几个按钮。您可以将侦听器添加到每个按钮,并记住随后将其删除,或者您可以将一个侦听器添加到父级。这可以起作用,因为MouseEvent启用了冒泡。

buttonParent.addEventListener(MouseEvent.CLICK,handleButtonClick); 

function handleButtonClick(event:MouseEvent):void 
{ 
    trace("The button clicked was " + event.target.name); 
} 

这样做的好处是,你现在可以添加和删除自如按钮,而无需担心连接听众给他们。事件对象的target属性将是对被点击的按钮的引用,并且currentTarget将是对父对象的引用。

可取消是一个标志,通过调用preventDefault()方法来设置是否允许您停止事件的默认操作。

+1

对于永远不会添加到显示列表的对象,例如数据对象,bubbles参数不起任何作用。 请注意,上面的代码将追踪按钮_parent_的名称,而不是按钮,因为currentTarget总是指向其addEventListener代码被调用的对象。如果你想得到按钮的名字,你需要在按钮上设置mouseChildren为false并且跟踪event.target。 – 2012-02-21 13:30:06

+0

@AmyBlankenship - 我似乎总是弄错了这些。 – shanethehat 2012-02-21 15:36:38

相关问题