3

我正在构建一个 Flash 应用程序(只是带有 FlashDevelop 的 AS3),我在保持事件系统周围松散耦合时遇到了一些麻烦。我已经阅读了大量有关中央事件系统和静态事件调度程序的内容,但它们并不完全适合我。

我正在构建的类似于视频播放器。我有一个Player类,它是应用程序所有其他小部分的父类。Player类扩展了Sprite,我目前对其进行了设计,以便您可以实例化多个Player并将它们放在舞台上。我还有一个扩展EventDispatcher的Controller类,我通过这个类调度我的所有事件。这是一个中心事件类。

问题是我需要传递对此类的引用,以便所有其他类都可以通过它进行调度和侦听。 传递参考作品,但它与松散耦合完全相反。我知道我可以制作一个所有班级都可以看到的静态 EventDispatcher,但是如果我在舞台上有两三个 Player,他们都会听到彼此的事件。

如何创建一种沙箱类型,允许Player实例的所有子类在不传递引用或使其静态的情况下了解中央调度程序?

4

2 回答 2

0

事实证明,我真正想要理解的是使用依赖注入之类的松耦合。

我从来没有在任何 AS3 项目中这样做过,因为无论如何我都没有做太多。最近做了更多的 C#,我使用StructureMapNinject等库更容易掌握这个概念。

对于 AS3,您可以使用像Robotlegs这样的框架。这可能会改变您编写 AS3 的方式,并且可能不适用于所有开发人员/情况。

于 2012-07-11T17:35:04.430 回答
0

我建议使用我的静态调度程序,这个有一个 ID 机制,可以告诉哪个 Player 实例调度一个事件。

于 2011-08-22T23:13:43.917 回答