![]() |
|
||||||||||
|
|||||
|
Привет. Возможно ли избежать копирования объекта события при повторном dispatchEvent?
Пишу сейчас движок игры и думаю, а не заменить ли стандартный механизм событий на свой. Никак не могу решить, оправдано ли это. События используются везде и много. И мне кажется что столь многочисленное копирование объектов событий выглядит совсем некрасиво. Может кто писал аналог стандартных событий, что можете сказать насчёт производительности? Что-то мне подсказывает, что они реализованы на более низком уровне и должны работать достаточно шустро, но это чёртово копирование не даёт мне покоя... (:
__________________
while(1) {} |
|
|||||
|
Modus ponens
|
Писал.
Копирования, к сожалению, нельзя избежать У событий есть какое-то "тайное" свойство типа handled, и если мы один раз использовали событие, то нативный диспатчер наотрез отказывается его диспатчить дальше.В теории, можно было бы оверрайдить clone() так: Но, факир был пъян, и фокус не удался... Альтернативы - есть: Вот тут есть маленький тест по разным вариантам: 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. |
|
|||||
|
Понятно, спасибо, почитаю.
__________________
while(1) {} |
|
|||||
|
Регистрация: Jan 2009
Сообщений: 1,651
|
в своих играх я стараюсь не использовать события, если это возможно.
вместо этого мои объекты выполняют заранее оговоренные функции родителя, или других объектов, ссылки на которые храню. Некрасиво конечно, но такой способ самый быстрый, а когда проект небольшой, но экономишь каждый тик...
__________________
мой пустой блог |
|
|||||
|
У меня довольно интересная система, почитать о ней можно тут.
Есть игровой объект, на него вешаются декораторы. Сцена может посылать события всем своим объектам(update, к примеру), и это событие приходит к заинтересованным декораторам. Декораторы могут подписываться/отписываться от событий. Также сцена может послать своим объектам событие типа "откликнуться тем кто находится в заданной области" - в объект события будут записаны ссылки на подходящие игровые объекты. Тут то и возникает засада с копированием события. А смысл всего этого огорода - расширять функционал без наследования. Мне очень понравилось (:
__________________
while(1) {} Последний раз редактировалось Division; 20.03.2010 в 00:13. |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:21. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|