Центральный диспетчер событий AS3, совместно используемый экземплярами (не статический) - PullRequest
3 голосов
/ 23 августа 2011

Я создаю флэш-приложение (только AS3 с FlashDevelop), и у меня возникают некоторые проблемы, связанные со слабой связью системы событий. Я много читал о центральных системах событий и статических диспетчерах событий, но они мне не совсем подходят.

То, что я строю, похоже на видеоплеер. У меня есть класс Player , который является родителем всех других маленьких частей приложения. Класс Player расширяет Sprite , и в настоящее время я разработал его так, чтобы вы могли создать несколько Player'ов и поставить их на сцену. У меня также есть класс Controller , который расширяет EventDispatcher , и я отправляю все свои события через этот класс. Это центральный класс событий.

Проблема в том, что мне нужно передать ссылку на этот класс, чтобы все остальные классы могли отправлять и прослушивать его. Передача ссылки работает, но это полная противоположность слабой связи. Я знаю, что мог бы создать статический EventDispatcher, который могли бы видеть все классы, но тогда, если бы на сцене было два или три игрока, они все услышали бы события друг друга.

Как создать тип песочницы , который позволит всем дочерним классам экземпляра Player узнавать о центральном диспетчере, не передавая ссылку или не делая ее статической?

Ответы [ 2 ]

0 голосов
/ 11 июля 2012

Оказывается, я действительно пытался понять, что такое слабая связь, например, внедрение зависимостей .

Я никогда не заканчивал тем, что делал это в каких-либо проектах AS3, так как я не делаю этого в любом случае.Сделав больше C # в последнее время, мне было легче понять эту концепцию, используя такие библиотеки, как StructureMap и Ninject .

. Для AS3 вы можете использовать такую ​​среду, как Robotlegs .Это, вероятно, изменит способ кодирования AS3 и может не подходить для всех разработчиков / ситуаций.

0 голосов
/ 23 августа 2011

Я бы предложил использовать мой статический диспетчер , в этом есть механизм идентификатора, который позволяет определить, какой экземпляр Player отправляет событие.

...