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

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

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

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
По умолчанию Эффективность событий в as3

Привет. Возможно ли избежать копирования объекта события при повторном dispatchEvent?
Пишу сейчас движок игры и думаю, а не заменить ли стандартный механизм событий на свой. Никак не могу решить, оправдано ли это. События используются везде и много. И мне кажется что столь многочисленное копирование объектов событий выглядит совсем некрасиво.

Может кто писал аналог стандартных событий, что можете сказать насчёт производительности? Что-то мне подсказывает, что они реализованы на более низком уровне и должны работать достаточно шустро, но это чёртово копирование не даёт мне покоя... (:
__________________
while(1) {}

Старый 19.03.2010, 18:47
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Писал.
Копирования, к сожалению, нельзя избежать У событий есть какое-то "тайное" свойство типа handled, и если мы один раз использовали событие, то нативный диспатчер наотрез отказывается его диспатчить дальше.
В теории, можно было бы оверрайдить clone() так:
Код AS3:
public override function clone():Event { return this; }
Но, факир был пъян, и фокус не удался...
Альтернативы - есть:
Вот тут есть маленький тест по разным вариантам:
http://code.google.com/p/hxhsl/sourc...vn/trunk/tests
(скачайте gif-ы и посмотрите). Самая распроатраненная альтернатива - то, что Robert Panner написал - (в тесте фигурирует как DeluxeSignal). На мой взгляд - там много лишнего + типизация какая-то мнимая.
Свой вариант я выкладывал в блоге. Есть еще и похожий вариант:
http://code.google.com/p/e4xu/source...emplate.as.fdt
(это темплейт к FD, но там еще надо подумать, как его сделать по-удобнее).

Да, а вот тут еще было интересное обсуждение по этому поводу:
http://n2.nabble.com/HSL-Connection-...td4114720.html
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 19.03.2010 в 18:51.
Старый 19.03.2010, 19:23
Division вне форума Посмотреть профиль Отправить личное сообщение для Division Найти все сообщения от Division
  № 3  
Ответить с цитированием
Division
 
Аватар для Division

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
Понятно, спасибо, почитаю.
__________________
while(1) {}

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

Регистрация: Jan 2009
Сообщений: 1,651
в своих играх я стараюсь не использовать события, если это возможно.
вместо этого мои объекты выполняют заранее оговоренные функции родителя, или других объектов, ссылки на которые храню.
Некрасиво конечно, но такой способ самый быстрый, а когда проект небольшой, но экономишь каждый тик...
__________________
мой пустой блог

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

Регистрация: Jul 2008
Адрес: Украина, Херсон
Сообщений: 635
Отправить сообщение для Division с помощью ICQ
У меня довольно интересная система, почитать о ней можно тут.
Есть игровой объект, на него вешаются декораторы. Сцена может посылать события всем своим объектам(update, к примеру), и это событие приходит к заинтересованным декораторам. Декораторы могут подписываться/отписываться от событий.
Также сцена может послать своим объектам событие типа "откликнуться тем кто находится в заданной области" - в объект события будут записаны ссылки на подходящие игровые объекты. Тут то и возникает засада с копированием события.

А смысл всего этого огорода - расширять функционал без наследования. Мне очень понравилось (:
__________________
while(1) {}


Последний раз редактировалось Division; 20.03.2010 в 00:13.
Создать новую тему Ответ Часовой пояс GMT +4, время: 10:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


 


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


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