Actionscript 3 为什么使用自定义事件而不是直接方法调用?
我是编程新手,我已经查阅了很多游戏编码教程。我注意到,在大多数情况下,它们使用自定义事件来触发方法,而不是直接调用方法 这种做法背后的原因是什么?他们为什么不直接调用这个方法呢 例如:Actionscript 3 为什么使用自定义事件而不是直接方法调用?,actionscript-3,flash,apache-flex,oop,events,Actionscript 3,Flash,Apache Flex,Oop,Events,我是编程新手,我已经查阅了很多游戏编码教程。我注意到,在大多数情况下,它们使用自定义事件来触发方法,而不是直接调用方法 这种做法背后的原因是什么?他们为什么不直接调用这个方法呢 例如: 我们有两个对象:A和BA有方法A.methodA()需要使用B方法 为什么要实施: B向A发送事件,通知A运行A.methodA() 而不是: B使用A.methodA() 通常在大型应用程序中,使用事件将有助于抽象所有内容。当您有15个以上的类,并且它们都在将事件添加到控制器时,要想弄清楚发生了什么事情要比通
我们有两个对象:
A
和B
<当触发X
条件时,code>A有方法A.methodA()
需要使用B
方法
为什么要实施:
B
向A
发送事件,通知A
运行A.methodA()
而不是:
B
使用A.methodA()
通常在大型应用程序中,使用事件将有助于抽象所有内容。当您有15个以上的类,并且它们都在将事件添加到控制器时,要想弄清楚发生了什么事情要比通读代码的所有不同部分来跟踪函数容易得多。使用回调开始创建意大利面代码
但是,直接函数调用的执行速度将比事件快 主要原因是利益分离。当使用事件时,类A不需要知道类B的存在(反之亦然) 这样做的一些好处是:
- 更简单的单元测试(您可以在不使用类B的情况下测试类A)
- 更改类别A或B时,破坏代码的可能性更小
- 减少对代码中其他类的引用,从而减少内存泄漏的可能性
- 清洁代码
- 更灵活/可重用的代码(一堆其他类都可以侦听/响应事件,而无需在dispatcher中添加任何其他代码)
private function onClickHandler( e:MouseEvent = null ):void{
//as long as you never reference "e" within this method, this method can be used both for MouseEvent listeners and manually calling it elsewhere in the code
}
这种技术有助于避免事件处理程序只调用另一个方法而不调用其他方法。在编程的这一点上,我编写的每个AS3事件处理程序都默认将事件参数设置为null。这只会让以后的事情变得更容易。
另外请注意,使用回调方法允许您直接向其传递参数,而不是通过自定义事件模型。我构建了自己的、非常简化的事件调度程序系统。事件模型非常强大,但在99%的情况下,您不需要这种能力。将参数作为事件激发的简单回调就足够了。您仍然可以保留事件模型的多功能性,但不需要为一个简单的按钮编写太多的代码行。 我可以设置这样一个简单的事件:
Buttonizer.autoButton(_buttQuit, this, "onPress");
public function onPressQuit(c:Sprite) {
// Execution goes here
}
您可以构建自己的事件模型,这将使生活更简单,代码更简洁。好吧,每次需要触发方法时都进行引用,这将使垃圾收集器的生活更轻松=)(他将无需担心的事情)。+1;我还要补充一点,事件是对象与其父对象通信的正确方式。方法调用或公共属性是父类与其子类通信的正确方式。@www.Flextras.com-同意,特别是当子类与不同的父类一起使用时。