Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка событий, как лучше расставить обработчики 
:(
    Опции темы
Ramirez
Дата 3.9.2007, 01:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Всем привет.

Модель работы с событиями в AS3 изменилась. Не все понятно пока, но многое радует =)

Как оптимальнее построить обработку событий, когда у меня есть куча обьектов (спрайтов, грубо говоря) в одном из вложенных клипов.
Каждый может, допустим, реагировать на некоторое событие (мышь например). Тут можно пойти 2-мя путями:

1. повестить по обработчику на каждый спрайт
2. повесить обработчик на сцену, смотреть target и вызывать его хэндлер (так мне кажется экономнее и управлять проще)

Собственно, это изометрический движок, поэтому спрайтов может быть довольно много, и мне кажется что, наплодить кучу Listener'ов не самая хорошая идея.

И еще, возможно-ли отловить событие на контейнере, а не на его содержимом?

Кто делал что-то подобное, поделитесь опытом/граблями! Спасибо.

Это сообщение отредактировал(а) Ramirez - 3.9.2007, 02:43
PM ICQ   Вверх
AlDev
Дата 3.9.2007, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 10
Всего: 50



Цитата(Ramirez @  3.9.2007,  06:47 Найти цитируемый пост)
1. повестить по обработчику на каждый спрайт
2. повесить обработчик на сцену, смотреть target и вызывать его хэндлер (так мне кажется экономнее и управлять проще)


События так и остались пузырьковыми.

Цитата(Ramirez @  3.9.2007,  06:47 Найти цитируемый пост)
мотреть target и вызывать его хэндлер

Цитата(Ramirez @  3.9.2007,  06:47 Найти цитируемый пост)
спрайтов может быть довольно много

Т.е. switch разрастется? Если да, то по обработчику на каждый спрайт - не сильно проблемно.

Вообще на нескольких сотнях спрайтов никаких траблов с производительностью я не наблюдал, вешая по обработчику на спрайт.
Цитата(Ramirez @  3.9.2007,  06:47 Найти цитируемый пост)
И еще, возможно-ли отловить событие на контейнере, а не на его содержимом?


mouseChildren = false - вырубит все события мыши дочерних клипов. Диспатчится будет только событие контейнера.
PM MAIL WWW ICQ YIM MSN   Вверх
Ramirez
Дата 3.9.2007, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: нет
Всего: 5



Цитата(AlDev @  3.9.2007,  07:06 Найти цитируемый пост)
Т.е. switch разрастется? Если да, то по обработчику на каждый спрайт - не сильно проблемно.


Не совсем switch. На сцену вешается такой обработчик:
        
Код

public function clickHandler(event:MouseEvent):void {
    event.target.clickHandler(event);
}


предполагается, что у каждого target есть метод clickHandler. Если его нет то будет exception. Его можно обойти с помощью try ... catch ... 
Или оно того не стоит?

Это сообщение отредактировал(а) Ramirez - 3.9.2007, 11:19
PM ICQ   Вверх
AlDev
Дата 3.9.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 10
Всего: 50



Это какое-то хитрое садо-мазо... Лучше не стоит smile
PM MAIL WWW ICQ YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 3 | Следующая тема »


 




[ Время генерации скрипта: 0.0856 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.