Performance AS3-向子级或父级添加不同的事件侦听器?

Performance AS3-向子级或父级添加不同的事件侦听器?,performance,actionscript-3,mobile,air,addeventlistener,Performance,Actionscript 3,Mobile,Air,Addeventlistener,我有一个带4个按钮的MC(按钮栏)。将单独的事件侦听器添加到每个按钮或将单个事件侦听器添加到父级并使用e.target.name检测单击了哪个按钮更有效?谢谢 事件的成本很高,对于具有大量事件处理程序的高性能应用程序,您应该这样做 ActionScript 3.0事件模型基于对象的概念 派遣。事件模型是面向对象的,并针对代码进行了优化 重新使用dispatchEvent()方法在侦听器列表中循环 并对每个注册的对象调用事件处理程序方法。然而, 事件模型的缺点之一是 在应用程序的生命周期内创建许多

我有一个带4个按钮的MC(按钮栏)。将单独的事件侦听器添加到每个按钮或将单个事件侦听器添加到父级并使用e.target.name检测单击了哪个按钮更有效?谢谢

事件的成本很高,对于具有大量事件处理程序的高性能应用程序,您应该这样做

ActionScript 3.0事件模型基于对象的概念 派遣。事件模型是面向对象的,并针对代码进行了优化 重新使用dispatchEvent()方法在侦听器列表中循环 并对每个注册的对象调用事件处理程序方法。然而, 事件模型的缺点之一是 在应用程序的生命周期内创建许多对象

使用本机事件模型可能会更慢,并消耗更多内存 而不是使用传统的回调函数。事件对象必须是 在内存中创建和分配,这会导致性能下降。 例如,在收听Event.ENTER_FRAME Event时,一个新的 在事件处理程序的每个帧上创建事件对象。 由于 捕获和冒泡阶段,如果显示器 清单很复杂

同样地

当使用交互式对象时,如MovieClip或Sprite 对象,运行时执行本机代码来检测和处理鼠标 互动。在以下情况下,检测鼠标交互可能会占用大量CPU: 屏幕上会显示许多交互对象,特别是当它们 重叠

如果可能,考虑禁用鼠标交互,这有助于 应用程序使用更少的CPU处理,从而减少 移动设备上的电池使用情况

根据动画方面的实际经验,我可以调用数千次回调,而每帧的处理程序数量有限

根据您的示例,组件体系结构允许事件冒泡到父控件;因此,按钮栏捕获事件的设计模式更好

根据按钮与按钮栏的紧密耦合程度,名称/实例的
开关块是有意义的,除非您从按钮栏控件分派自定义事件抽象按钮控件。

这是您可以使用的

addChild("YourButtonName").addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);

private function mouseDownHandler(event:MouseEvent):void {
    "Your mouse click Action is Here"
}

后者,但是你必须有很多监听器才能使它在性能上有真正的不同。对于一个点击事件,你可以用它自己的点击监听器处理数十万个项目,这并不重要。这就是我的想法。谢谢