Как поставить несколько событий в очередь в один eventHandler в ActionScript 3? - PullRequest
0 голосов
/ 03 июня 2009

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

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

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

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

1 Ответ

2 голосов
/ 04 июня 2009

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

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

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

...