Как поставить несколько событий в очередь в один 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 (снова см. выше), но это все. Там нет встроенной очереди диспетчеризации событий, если вы не пишете очередь самостоятельно.