Иногда я хотел нажать на крышку события ActionScript так, чтобы она была выполнена после текущего обработчика событий. Сейчас я использую setTimeout(closure, 0)
. Есть ли более прямой способ сделать это?ActionScript: нажатие замыкания на стек событий?
ответ
setTimeout (замыкание, 0) создает новый стек событий. Я не понимаю вашу цель, если это решение не работает для вас. Какую цель вы пытаетесь достичь?
Flex имеет события ENTER_FRAME, Timer, callLater, setTimeout, setInterval, все, что задерживает вызовы и создает новые стеки выполнения.
Вы пытаетесь ввести код в текущий стек? Если это так, вам может потребоваться посмотреть примерно следующее: http://en.wikipedia.org/wiki/Active_object. Идея состоит в том, что вы нажимаете функции (замыкания) на массив, а активный контроллер объекта вытягивает следующий из списка, когда предыдущий запускается до завершения. Это самый простой случай. Вы можете написать более сложный, который будет иметь приоритетные стеки, такие как высокий, средний, низкий, с вашей собственной системой управления расписанием. (например, низкий уровень поощрения после слишком долгого ожидания).
Но эй! Дьявол кроется в деталях. Какова цель?
Взгляните на фазы захвата и пузырения событий as3. Я нашел эту приятную главу, которая четко объясняет процесс: http://books.google.com/books?id=yFNZGjqJe9IC&lpg=PA250&ots=oPB9HXIby7&dq=flash%20event%20bubbling%20phase&pg=PA250#v=onepage&q=&f=false
Также проверьте документацию класса EventDispatcher, объясняющую использование этих разных фаз.
Прошу прощения ... Я не совсем понимаю, как это связано. –
- 1. Нажатие результата умножения на стек
- 2. нажатие событий на несколько профилей
- 3. Нажатие строки на стек <E>
- 4. Нажатие Nibbles на целочисленный стек в C
- 5. Нажатие значений на стек из очереди
- 6. C++ - Нажатие C-String на стек шаблона
- 7. Нажатие массива 2d на стек C++ STL?
- 8. Замыкания, петли и обработчики событий
- 9. Нажатие целого числа в стек
- 10. Нажатие SKB в сетевой стек
- 11. нажатие данных в стек, assenbly
- 12. Список событий ActionScript 3
- 13. стек на слушателя событий Doctrine PostPersist
- 14. Нажатие DialogViewController на ViewController на стек NavigationController дает 2 страницы
- 15. Нажатие обработчиков событий на родительские компоненты
- 16. Однократное нажатие событий на нескольких режимах просмотра?
- 17. ActionScript 3, обработка событий событий мыши
- 18. Передача параметра в обработчик событий из замыкания
- 19. Где находится стек событий PyGTK?
- 20. Имитация Длительное нажатие прикосновением событий
- 21. Actionscript, объекты и слушатели событий
- 22. нажатие данных в стек с помощью LinkedList
- 23. Нажатие элементов в стек с LINQ
- 24. Нажатие mov или lea в стек
- 25. Запуск событий в ActionScript 2
- 26. Нажатие на стек, который использует Связанный список в java
- 27. Нажатие на стек, содержащий ТОЛЬКО уникальные значения в C
- 28. Нажатие на навигационный стек с (или без) панелью навигационного контроллера
- 29. Отправка событий из класса ActionScript
- 30. ActionScript - получить функцию диспетчера событий
Спасибо - я рассмотрю функции, которые вы упомянули. И цель в основном заключается в том, чтобы сделать мое намерение («Я хочу надавить на стопку выполнения, чтобы он выполнялся с некоторым неопределенным количеством времени после завершения текущего обработчика событий») и 'setTimeout (..., 0) 'не похоже, что это делает вещи очень ясными (если, конечно, вы не знаете что-то о внутренней работе setTimeout). –
Итак, callLater не совсем то, что я ищу ... Но это может быть лучшее, что я получу, спасибо. –
Не ненавидите setTimeout. Это было с самого начала JavaScript. Но если вам это нужно для произвольных задержек, возможно, что-то не так с вашим дизайном. Я никогда не нашел callLater надежным в ожидании. По крайней мере, с setTimout, вы знаете, как долго вы ждете, даже если это взломать. – Glenn