Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 23.09.2009, 00:32
switcher! вне форума Посмотреть профиль Отправить личное сообщение для switcher! Найти все сообщения от switcher!
  № 1  
Ответить с цитированием
switcher!

Регистрация: May 2009
Сообщений: 220
По умолчанию Последовательность обработки событий в среде выполнения Flash

Просьба не спрашивать, зачем мне это нужно ))
собственно, по сабжу:
Имеем абстрактную ситуацию:

- выполняется блок кода обработчика 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.
Старый 23.09.2009, 00:52
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Кастомные события - это все равно что функцию вызвать. т.е. если у вас в вашем методе dispatchEvent() есть, то вот пока он этот евент всем кому нужно не раздаст, ничего происходить больше не будет.
__________________
Hell is the possibility of sanity

Старый 23.09.2009, 00:53
r_r_f_r вне форума Посмотреть профиль Отправить личное сообщение для r_r_f_r Найти все сообщения от r_r_f_r
  № 3  
Ответить с цитированием
r_r_f_r

Регистрация: Sep 2008
Адрес: Москва
Сообщений: 224
Обработчик вызывается сразу в момент "появления события на горизонте", т.е. хэндлер КастомЭвент'а вызовется сразу, а рассылка нативных событий может откладываться до лучших времён.

Старый 23.09.2009, 00:56
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 4  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Сдается мне, вы не от того исходите... Ставите проблему выше своей задачи.

Старый 23.09.2009, 01:56
switcher! вне форума Посмотреть профиль Отправить личное сообщение для switcher! Найти все сообщения от switcher!
  № 5  
Ответить с цитированием
switcher!

Регистрация: May 2009
Сообщений: 220
По поводу кастомных событий - даже не предполагал. Спасибо!!!
А судя потому, что ничего не было сказано по последним вопросам, делаю вывод: события стоят в очереди верно (кроме, 5. CUSTOM_FLAG) и 7. ENTER_FRAME не может отодвинуть 6. TIMER за себя.

Цитата:
Сообщение от Партизан Посмотреть сообщение
Ставите проблему выше своей задачи.
Так нет никакой проблемы Зато есть приоритетная задача "быть хорошим специалистом в своей области"
Имхо, чем штамповать код до бесконечных "затыков" - лучше важные моменты программирования узнать заранее, чтобы не учиться на своих ошибках. Ибо на подводные камни натыкаешься редко, но бьют они, как правило - больно.
А что может быть важнее, чем сами принципы обработки событий и вообще кода?

+ последней каплей для вопроса стал пост BlooDHounD о начале загрузки только после завершения блока кода. Чего я собственно не знал, а это, имхо - важно.

ИТОГ таков: кто знает и кому не жалко - поделитесь ссылками по сабжу. Такие вещи выдираются только по крупицам в несвязанных темах. Хотелось бы что-нить "собранное". И желательно при этом не отсылать читать что-то вроде "спецификации событий из объектной модели документа (DOM) третьего уровня".

Старый 23.09.2009, 11:10
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
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.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.