Ну, мне кажется, это чистый и эффективный способ сделать это.
Что вы подразумеваете под задержкой? Вы имеете в виду просто обрабатывать их позже или обрабатывать через определенное время?
Вы всегда можете установить тайм-аут на фактическую функцию обработки в вашем обработчике событий (используя flash.utils.setTimeout
), чтобы обработать событие в определенный момент времени. Но это может стать неэффективным, так как у вас может быть много тайм-аутов, которые должны быть обработаны средой выполнения.
Может быть, вы могли бы указать свои потребности немного больше.
редактирование:
Хорошо, в основном, Flash Player является однопоточным, то есть Выполнение байт-кода является однопоточным . И любое событие, которое отправляется, обрабатывается немедленно, то есть dispatchEvent(someEvent)
будет напрямую вызывать все зарегистрированные обработчики (таким образом, AS-байт-код).
Теперь есть события, которые на самом деле генерируются в фоновом режиме. Они поступают либо из входов / выходов (сеть, пользовательский вход), либо из таймеров (TimerEvents). Может случиться, что некоторые из этих событий действительно происходят, пока выполняется байт-код. Обычно это происходит в фоновом потоке, который передает событие (в абстрактном смысле этого термина) в основной поток через (де) очередь.
Если основной поток занят выполнением байт-кода, то он будет игнорировать эти сообщения до тех пор, пока это не будет сделано (обратите внимание: почти любое выполнение байт-кода всегда является неявным следствием события (будь то ввод кадра, или ввода, или таймера, или загрузки) операция или что угодно)). Когда он находится в режиме ожидания, он просматривает все очереди, пока не найдет доступное сообщение, не обернет информацию в объект события ActionScript и не отправит ее, как описано ранее.
Таким образом, эта организация очередей является механизмом очень низкого уровня, который происходит от связи между потоками (и появляется во многих сценариях с многопоточностью) и недоступен для вас.
Но, как я уже говорил, ваш подход оправдан и имеет смысл.