![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2009
Сообщений: 220
|
Просьба не спрашивать, зачем мне это нужно ))
собственно, по сабжу: Имеем абстрактную ситуацию: - выполняется блок кода обработчика ENTER_FRAME. Код "увесистый", "трудоемкий" для процессора. И во время выполнения этого блока кода - пользователь кликает мышью (CLICK) и одновременно нажимает кнопку на клавиатуре(KEY_DOWN). Допустим событие мыши происходит на мгновение раньше КеубордЭвент. - поскольку обработка ENTER_FRAME еще не завершена, то обработка события мыши ставится в очередь за ENTER_FRAME-ом. - следующее событие, собственно, KEY_DOWN. Ставится в очередь за мышью. ИТОГО имеем очередность: 1. ENTER_FRAME 2. отрисовка экрана (если нужно) 3. CLICK 4. KEY_DOWN Но вот незадача. Обработчик события CLICK диспатчит некий КастомЭвент (например, CUSTOM_FLAG). Вот здесь подвопрос: кастомное событие станет в очередь сразу после CLICK или после KEY_DOWN ?? Предполагаю, что после KEY_DOWN... - тут возникает событие ТаймерЭвент. - далее возникает ENTER_FRAME (мол, по времени уже готовимся рисовать экран) - НО среда выполнения только CLICK начала обрабатывать! такой вот у нас "трудный" код ))) ИТОГО предварительно имеем (от самого начала): 1. ENTER_FRAME 2. отрисовка экрана (если нужно) 3. CLICK 4. KEY_DOWN 5. CUSTOM_FLAG 6. TIMER 7. ENTER_FRAME Все ли верно (с учетом вышеописанных тонкостей) ?? + читал и здесь, на форуме и в другой литературе, что обработка таймера может быть "отложена" до лучших времен. Значит ли это, что в приведенной последовательности - 7. ENTER_FRAME (+отрисовка экрана) выполнится раньше 6. TIMER ?? Последний раз редактировалось switcher!; 23.09.2009 в 00:39. |
|
|||||
|
Modus ponens
|
Кастомные события - это все равно что функцию вызвать. т.е. если у вас в вашем методе dispatchEvent() есть, то вот пока он этот евент всем кому нужно не раздаст, ничего происходить больше не будет.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
|
Обработчик вызывается сразу в момент "появления события на горизонте", т.е. хэндлер КастомЭвент'а вызовется сразу, а рассылка нативных событий может откладываться до лучших времён.
|
|
|||||
|
Регистрация: May 2009
Сообщений: 220
|
По поводу кастомных событий - даже не предполагал. Спасибо!!!
А судя потому, что ничего не было сказано по последним вопросам, делаю вывод: события стоят в очереди верно (кроме, 5. CUSTOM_FLAG) и 7. ENTER_FRAME не может отодвинуть 6. TIMER за себя. Так нет никакой проблемы Зато есть приоритетная задача "быть хорошим специалистом в своей области"Имхо, чем штамповать код до бесконечных "затыков" - лучше важные моменты программирования узнать заранее, чтобы не учиться на своих ошибках. Ибо на подводные камни натыкаешься редко, но бьют они, как правило - больно. А что может быть важнее, чем сами принципы обработки событий и вообще кода? ![]() + последней каплей для вопроса стал пост BlooDHounD о начале загрузки только после завершения блока кода. Чего я собственно не знал, а это, имхо - важно. ИТОГ таков: кто знает и кому не жалко - поделитесь ссылками по сабжу. Такие вещи выдираются только по крупицам в несвязанных темах. Хотелось бы что-нить "собранное". И желательно при этом не отсылать читать что-то вроде "спецификации событий из объектной модели документа (DOM) третьего уровня". ![]() |
|
|||||
|
.
|
1. Происходит событие ENTER_FRAME
2. Рассылка события (Event) ENTER_FRAME 3. Обработка события ENTER_FRAME 4. Происходит событие CLICK 5. Рассылка события (Event) CLICK 6. Обработка события CLICK 7. Обработчик события CLICK рассылает событие (Event) CUSTOM_FLAG 8. Обработка события CUSTOM_FLAG 9. Происходит событие KEY_DOWN 10. Рассылка события (Event) KEY_DOWN 11. Обработка события KEY_DOWN 12. Происходит событие TIMER 13. Рассылка события TIMER 14. Обработка события TIMER .... переход на п.1. |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|