gpt4 book ai didi

Flash CS AS3 OOP 软件架构

转载 作者:行者123 更新时间:2023-12-04 06:57:45 24 4
gpt4 key购买 nike

当您使用 flash 从头开始​​构建 flash 时,它主要是 AS3,并且您使用所有外部 .as 类文件,您如何构建您的软件?你使用什么类型的全局变量结构?你的顶级类(class)看起来总是一样吗?您使用哪一行代码来编程将主子显示对象附加到根 MovieClip?

最佳答案

在 OOP Flash 中处理架构问题基本上有两种方法。任何认真的开发人员都应该熟悉的标准模型使用自定义事件。在您上面的示例中,您的 windowKnob 然后不知道该窗口 - 它只知道它是否已被按下。按下时,它会调度一个“knobPressed”事件。 Car 对象捕获该事件,然后告诉 WindowManager 打开关联的窗口。

事件一开始处理起来有点棘手,因为如何用它们发送数据负载并不明显。也许您的旋钮可以向上或向下按下,但只发送一个事件。那么,汽车如何知道您是要打开还是关闭车窗呢?因为您将 Event 类扩展为创建的 WindowKnobEvent,并且在 WindowKnobEvent 上公开了一个名为“direction”的公共(public)属性,该属性可以设置为向上或向下。当该事件触发并传递给您的 WindowManager 时,也许您在那里设置了一个 switch 语句,以根据“direction”属性进行不同的行为——这有意义吗?

因此,在 95% 的情况下,您都希望使用 Event 模型在整个应用程序中传播数据。

但是,有时使用回调可能是合适的。换句话说,您可以将 WindowKnob 对象传递给 WindowManager 中的 OpenWindow 函数的引用。由于函数都是对象,您只需说 var openWindowFunction:Function = WindowManager.openWindow,然后将 openWindowFunction 传递给您的旋钮类。

这通常是一个坏主意:这意味着您的代码是紧密耦合的。这意味着你不能把那个旋钮放到另一辆车上——你会弄坏它,因为它不再能够保存对第一辆车的 WindowManager 的引用。但是,在某些情况下,回调可能更有效。例如,在移动设备优化中,通常最好尽量减少创建的对象数量。您调度的每个事件都使用内存。建立一次回调引用,然后在每次有人按下旋钮时让它运行而不创建新的 Event 对象会更有效一些。

这有帮助吗?我的意思是,AS3 OOP 架构很难用一个单一的 SO 响应来概括——但我想要点是:了解事件是如何工作的,一切都会落实到位。除非您了解其中的含义,否则不要使用回调。

干杯,我希望这会有所帮助!
我的

关于Flash CS AS3 OOP 软件架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2344850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com