PDA

Просмотр полной версии : Ловить события по ссылке "через голову"


Appleman
09.06.2018, 17:01
Друзья!

Такая штука. Есть менеджер экипировки, у него в слоте есть предмет, у предмета есть менеджер статусов (доступен по геттеру statuses). Менеджер статусов умеет отправлять события об изменении статус-эффектов своего "хозяина". В методе экипировки предмета пытаюсь повесить вот такой слушатель:

item.statuses.addEventListener(ModelEventTypes.STATUS_UPDATE, statusUpdateRedispatcher);

Пока ни одного события я не поймал. Скажите, это оттого что слушать статус-эффекты пытаюсь "через голову" item-а? Вообще, возможна ли такая запись? Спасибо.

undefined
09.06.2018, 19:09
вполне возможна,проверяй уходит ли событие из statuses

Appleman
10.06.2018, 01:08
Всё, поймал. :) Правда, в таком варианте в target болтается сам статус-менеджер, а не его "хозяин", что логично.

undefined
10.06.2018, 03:08
К чему эти костыли с отдельным диспетчером? По чему бы итему не отнаследоваться от EventDispatcher и не слать все самому?

Wolsh
10.06.2018, 09:06
Правда, в таком варианте в target болтается сам статус-менеджер, а не его "хозяин", что логично.
EventDispatcher () Constructor
public function EventDispatcher(target:IEventDispatcher = null)

target:IEventDispatcher (default = null) — The target object for events dispatched to the EventDispatcher object. This parameter is used when the EventDispatcher instance is aggregated by a class that implements IEventDispatcher; it is necessary so that the containing object can be the target for events. Do not use this parameter in simple cases in which a class extends EventDispatcher.

Appleman
11.06.2018, 15:50
К чему эти костыли с отдельным диспетчером? По чему бы итему не отнаследоваться от EventDispatcher и не слать все самому?

Ну да, наверное правильнее всё-таки будет не лениться и редиспатчить событие от самого предмета.

Добавлено через 1 минуту
EventDispatcher () Constructor
public function EventDispatcher(target:IEventDispatcher = null)


О, круто, буду иметь в виду. Правда в моём случае ничего не выйдет, т.к. статус-менеджер прикручен к Item-у по принципу композиции и соответственно ни хрена о нём не "знает" :)