我正在构建一个Flash应用程序(只是带有FlashDevelop的AS3),我在整个事件系统中保持松散耦合方面遇到了一些麻烦。我已经做了很多关于中央事件系统和静态事件调度器的阅读,但它们并不适合我。
我正在构建的内容类似于视频播放器。我有一个播放器类,它是应用程序所有其他小部分的父级。 播放器类扩展了 Sprite ,我目前正在设计它,以便您可以实例化多个播放器并将它们放在舞台上。我还有一个 Controller 类,它扩展了 EventDispatcher ,并通过这个类调度我的所有事件。这是一个中心事件类。
问题是我需要传递对这个类的引用,以便所有其他类可以调度和监听它。传递引用有效,但它与松散耦合完全相反。我知道我可以创建一个所有类都可以看到的静态EventDispatcher但是如果我在舞台上有两个或三个玩家,他们都会听到彼此的事件。
如何创建一种沙箱类型,允许 Player 实例的所有子类知道中央调度程序而不传递引用或进行引用静态?
答案 0 :(得分:0)
我建议使用my static dispatcher,这个有一个ID机制,允许告诉哪个Player实例调度一个事件。
答案 1 :(得分:0)
事实证明我真正想要理解的是使用依赖注入之类的松散耦合。
我从来没有在任何AS3项目中这样做,因为我还是没有做太多的事情。最近我做了更多C#,我更容易使用 StructureMap 和 Ninject 等库来掌握这个概念。
对于AS3,您可以使用Robotlegs之类的框架。这可能会改变您编写AS3的方式,可能不适用于所有开发人员/情况。