AS3 - отправка события вниз по списку отображения (вместо вверх) - PullRequest
1 голос
/ 15 декабря 2009

Учтите это (псевдо-код):

var country = new Country();
addChild(country);

var state = new State();
country.addChild(state);

var city = new City();
state.addChild(city);

Я могу отправлять события из города в страну следующим образом (в классе City):

dispatchEvent(new CustomEvent(CustomEvent.WHATEVER));

Поскольку события всплывают в списке отображения. Но как я могу отправить событие из класса СТРАНЫ, чтобы город услышал его? Когда я добавляю слушателей событий в город, отправка событий из страны не регистрируется.

Ответы [ 3 ]

1 голос
/ 17 декабря 2009

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

0 голосов
/ 15 декабря 2009

Вы можете использовать одноэлементный класс eventdispatcher, который в этом случае может оказаться очень полезным.

0 голосов
/ 15 декабря 2009

Вы можете установить город в качестве слушателя, ссылаясь на родителя его родителя.

class City extends Sprite
{
    public function City()
    {
        this.addEventListener(Events.ADDED_TO_STAGE, this.foo()); // P.S. Verify event type. This is over the top of my head.
    }

    private function addedToStage(e:Event):void
    {
        this.parent.parent.addEventListener(Country.EVENT_TYPE, this.foo());
    }

    private function foo(e:Event):void
    {
        // Handle event
    }
}

Теперь все это просто замечательно, но, вероятно, есть лучший способ создать свой код. Прямо сейчас у вас есть круговая зависимость, которая может привести к утечке памяти, если ее не очистить должным образом. Если вы можете уточнить ваши требования, кто-то может предложить альтернативный подход.

...