我正在构建一个 Flash 应用程序(只是带有 FlashDevelop 的 AS3),我在保持事件系统周围松散耦合时遇到了一些麻烦。我已经阅读了大量有关中央事件系统和静态事件调度程序的内容,但它们并不完全适合我。
我正在构建的类似于视频播放器。我有一个Player类,它是应用程序所有其他小部分的父类。Player类扩展了Sprite,我目前对其进行了设计,以便您可以实例化多个Player并将它们放在舞台上。我还有一个扩展EventDispatcher的Controller类,我通过这个类调度我的所有事件。这是一个中心事件类。
问题是我需要传递对此类的引用,以便所有其他类都可以通过它进行调度和侦听。 传递参考作品,但它与松散耦合完全相反。我知道我可以制作一个所有班级都可以看到的静态 EventDispatcher,但是如果我在舞台上有两三个 Player,他们都会听到彼此的事件。
如何创建一种沙箱类型,允许Player实例的所有子类在不传递引用或使其静态的情况下了解中央调度程序?