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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.10.2010, 15:10
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 1  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
По умолчанию Сущность слушателя события

Всем привет. А что есть слушатель события на самом деле? Как часто он прослушивает нужное ему событие и когда именно? Почему не рекомендуется делать много слушателей у однотипных объектов и по возможности делать один слушатель у их контейнера? Чем грозят склеенные приемники событий у слушателя одного объекта?
Один вопрос - одна тема, но вопросы однотипные, объединенные одной и довольно конкретной темой.
__________________
тут я

Старый 30.10.2010, 15:24
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
1. То что ты пишешь вторым параметром в addEventListener. Функция, принимающая параметром объект данного события.
2. Не понял вопроса. Когда возникает событие, функция-обработчик вызывается и ей отдается событие.
3. Зависит от контекста, в котором это советовалось.
4. Что это - "склеенные приемники событий"?
__________________
Reality.getBounds(this);

Старый 30.10.2010, 15:34
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 3  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
1. То что ты пишешь вторым параметром в addEventListener. Функция, принимающая параметром объект данного события.
Хм, это я в понятиях запутался, значит. Обратился к товарищу Муку, он называет этот метод приемником события.
2. Как часто флеш плеер проверяет, не наступило ли то или иное событие?
3. Скажем, пули добавляются в контейнер с пулями, пуль несколько десятков. Советовали делать один слушатель на весь контейнер и двигать эти пули в нем, а не вешать каждый слушатель на каждую пулю.

4. А вот здесь придется немного расписать:
Имеем класс А, в нем к stage присобачивается слушатель события enterFrame a()
Имеем класс B, в нем к тому же stage присоединяется слушатель того же события b()
Я правильно понимаю, что эти слушатели суммируются? Таких слушателей на stage, ловящих одно и то же событие, может быть больше, чем два. Чем это грозит?
__________________
тут я

Старый 30.10.2010, 17:38
f.g.programmer вне форума Посмотреть профиль Отправить личное сообщение для f.g.programmer Найти все сообщения от f.g.programmer
  № 4  
Ответить с цитированием
f.g.programmer
 
Аватар для f.g.programmer

блогер
Регистрация: Sep 2010
Адрес: Россия
Сообщений: 137
Записей в блоге: 3
2. Сразу, когда происходит dispatchEvent
3. ENTER_FRAME бросается из каждого отображаемого объекта, но если вы добавите обработчик в контейнер, у вас вызовется одна функция, если к каждой пуле, то вызовов будет столько, сколько пуль. Т.е. производительность хуже.
4. Грозит тем, что у вас не будет полной уверенности в том, какой обработчик вызовется раньше.

Старый 30.10.2010, 18:06
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 5  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
2. Это и так понятно. Я хочу узнать конкретнее. Скажем, как часто ФП проверяет, нажали ли мы на кнопку? Раз в кадр? Или 100 раз в секунду?
3. А, ну я догадывался, что так оно и происходит.
4. Только это? Тогда нужно так проектировать код, чтобы не было зависимости двух методов-приемников.
__________________
тут я

Старый 30.10.2010, 23:53
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 6  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
2. По-сути все равно, можно принять: раз в кадр, ввиду того, что код выполняется раз в кадр, чаще вы его поймать не сможете.
4. Можно выставить приоритет, это даст некоторую гарантию последовательности.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Скажем, как часто ФП проверяет, нажали ли мы на кнопку? Раз в кадр? Или 100 раз в секунду?
Операционная систем опрашивает клавиатуру "Что у тебя нажато?" с какой-то частотой. С такой же састотой возникают события о нажатиях.

Цитата:
раз в кадр, ввиду того, что код выполняется раз в кадр, чаще вы его поймать не сможете.
Ерунда. Поставьте частоту кадров на 1 и посмотрите через trace
__________________
...вселенская грусть

Старый 31.10.2010, 01:21
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 8  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
alatar по-своему прав. Весь код выполняется раз в кадр. Думаю, все диспатчи событий в этом кадре тут же ловятся слушателями и обрабатываются в этом же кадре. Продолжаю думать дальше: ФП нет смысла проверять очень часто, был ли диспатч того или иного события. Ибо он может произойти только раз в секунду/FPS. Но как быть тогда с таймерами? Они разве настолько сильно привязаны к кадрам, что код метода их "тика" выполняется только синхронно с другим кодом? Хотя, там, наверно, выполнение метода по таймеру может варьироваться в очереди выполнения всего кода.
Логично же, нет?

Цитата:
Ерунда. Поставьте частоту кадров на 1 и посмотрите через trace
А вот здесь уже да. Получается, что опрос ФП того или иного события не зависит от FPS и ограничен только производительностью в текущий момент времени. Зачем это сделано? Все равно код при 1 фпс сработает только раз в секунду. Не вижу смысла ловить так часто.
__________________
тут я

Старый 31.10.2010, 01:43
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 9  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Ибо он может произойти только раз в секунду/FPS
С чего Вы это взяли? Как только срабатывает ENTER_FRAME, начинают подряд выполняться все функции, которые переданы в параметр addEventListener. Выполняются они в том порядке, в котором добавлялись слушателю + в зависимости от приоритета.
Событий за кадр можно отправить сколько угодно. Пока все обработчики не отработают, мы на следующий кадр не попадем. Именно поэтому fps может падать при большой нагрузке - т.к. рендер привязан к коду (что, ИМХО, не всегда есть хорошо)

Вы поймите, что dispatchEvent практически ничем не отличается от прямого вызова всех слушателей (или, если хотите, прямого вызова функций). С той лишь разницей, что при dispatchEvent мы, в принципе, не всегда знаем, что будет вызвано

ЗЫ
То есть тут вообще никто ничего не проверяет, а просто выполняются нужные методы
__________________
...вселенская грусть

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

Теги
слушатель событий

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

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


 


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


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