![]() |
Эффективность событий в as3
Привет. Возможно ли избежать копирования объекта события при повторном dispatchEvent?
Пишу сейчас движок игры и думаю, а не заменить ли стандартный механизм событий на свой. Никак не могу решить, оправдано ли это. События используются везде и много. И мне кажется что столь многочисленное копирование объектов событий выглядит совсем некрасиво. Может кто писал аналог стандартных событий, что можете сказать насчёт производительности? Что-то мне подсказывает, что они реализованы на более низком уровне и должны работать достаточно шустро, но это чёртово копирование не даёт мне покоя... (: |
Писал.
Копирования, к сожалению, нельзя избежать :( У событий есть какое-то "тайное" свойство типа handled, и если мы один раз использовали событие, то нативный диспатчер наотрез отказывается его диспатчить дальше. В теории, можно было бы оверрайдить clone() так: Код AS3:
Альтернативы - есть: Вот тут есть маленький тест по разным вариантам: 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 |
Понятно, спасибо, почитаю.
|
в своих играх я стараюсь не использовать события, если это возможно.
вместо этого мои объекты выполняют заранее оговоренные функции родителя, или других объектов, ссылки на которые храню. Некрасиво конечно, но такой способ самый быстрый, а когда проект небольшой, но экономишь каждый тик... |
У меня довольно интересная система, почитать о ней можно тут.
Есть игровой объект, на него вешаются декораторы. Сцена может посылать события всем своим объектам(update, к примеру), и это событие приходит к заинтересованным декораторам. Декораторы могут подписываться/отписываться от событий. Также сцена может послать своим объектам событие типа "откликнуться тем кто находится в заданной области" - в объект события будут записаны ссылки на подходящие игровые объекты. Тут то и возникает засада с копированием события. А смысл всего этого огорода - расширять функционал без наследования. Мне очень понравилось (: |
| Часовой пояс GMT +4, время: 14:40. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.