Концепция AS3, похожая на Event-Bubbling, на неэкранные объекты? - PullRequest
0 голосов
/ 26 августа 2011

События во Flash / AS3 очень сильно связаны со списком отображения.Существует фаза захвата, цели и всплытия, которая хороша, когда речь идет об объектах, видимых на сцене.

Но есть ли аналогичная концепция для неэкранных объектов, находящихся вне списка отображения?

Если у нас есть объекты A, B и C, где C был создан в объекте B, а B был создан в объекте A, и ни один из них не является отображаемым объектом: Как A может прослушивать события, происходящие в C?

1 Ответ

2 голосов
/ 26 августа 2011

Вы можете решить свою проблему, используя как минимум две стратегии:

1) Повторная отправка событий.Скажем, C отправляет какое-то событие.В B мы подписываемся на это событие и повторно отправляем его:

var c:C = new C();
c.addEventListener("myEvent", myEventHandler);

private function myEventHandler (event:Event):void
{
    dispatchEvent(event);
}

Помните, что вы должны реализовать clone() правильно для своего пользовательского класса событий в этом случае.Вы также можете перевести событие из C в другое событие в B и отправить его.

2) Передать C в A.Вы можете сделать это, используя интерфейс flash.events.IEventDispatcher.

Что-то вроде следующего:

В B:

private var _c:IEventDispatcher;

public function get innerInstance():IEventDispatcher
{
    return _c;
}

public function B()
{
    _c = new C();
}

В A:

var b:B = new B();
b.innerInstance.addEventListener("myEvent", myEventHandler);
...