Как поставить несколько событий в очередь в один eventHandler в ActionScript 3?

Я строю структуру для загрузки мини-игр (в SWF), и сталкиваюсь с проблемой.

В настоящее время у меня есть слушатель, который прослушивает события, которые дочерняя мини-игра отправляет в родительский каркас. Однако, если дочерний элемент отправляет два сообщения (события) слишком близко друг к другу, кажется, что первое событие просто игнорируется, что приводит к тому, что некоторые сообщения вообще не достигают родительской структуры.

Я читал, что вы можете как-то ставить в очередь события ActionScript, чтобы события обрабатывались на основе FIFO. Как я могу это сделать? Документация кажется довольно скудной для этой проблемы, поэтому я в тупике.

Большое спасибо!

1 ответ

Решение

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

Тем не менее, даже если вы отправили свои события в тесной петле, как это:

addEventListener("foo", handleFoo, false, 0);

for (var i:int = 0; i < 100; i++)
{
   dispatchEvent(new FlexEvent("foo"));
}

private function handleFoo(event:Event):void
{
   trace("hello");
}

... вы увидите столько же "привет", сколько итераций этого цикла; это не становится намного "ближе друг к другу", чем это. Вы можете расставить приоритеты при обработке событий - например, этот слушатель вызывается первым (отсюда и "0" выше), этот другой слушатель вызывается вторым ("1") и т. Д. - используя аргумент приоритета функции addEventListener (снова см. выше), но это все. Там нет встроенной очереди диспетчеризации событий, если вы не пишете очередь самостоятельно.

Другие вопросы по тегам