2014-01-21 3 views
3

Хорошо, очевидно, использование обработки событий фантастически удобно, но, очевидно, одни и те же эффекты могут быть достигнуты и с помощью композиции. Так же, как я могу отправить событие, которое будет получено в контексте другого объекта, я могу включить этот другой объект и манипулировать им напрямую.AS3: Неэффективны ли события?

Теперь, ориентированный на события подход, безусловно, более организован. Я пытаюсь оптимизировать программу, что я вижу некоторые проблемы с производительностью, хотя и задаюсь вопросом, как далеко избежать использования событий может занять меня. Любая руководящая мудрость оценена!

ответ

0

Вы должны проверить Сигналы. https://github.com/robertpenner/as3-signals

+0

Это выглядит красиво синтаксически, но где усиление производительности? –

+0

Проверьте несколько страниц. [Сигналы против событий] (https://www.google.co.uk/search?q=as3+signals+vs+events&rlz=1C1CHFX_en-GBGB536GB536&oq=as3+events+ver&aqs=chrome.1.69i57j0j69i60l3.9443j0j7&sourceid=chrome&espv=210&es_sm = 93 & ie = UTF-8) – 3vilguy

+0

Также используется функция обратного вызова, в зависимости от ситуации. Я использовал оба. – Panzercrisis

1

Причина События имеют репутацию неэффективна потому, что:

  • Построение объектов считается медленным.
  • A новый Объект события строится каждый раз, когда что-то отправляет событие.

В сценарии, в котором у вас много объектов, отправляющих много событий, это, очевидно, дает результат из многих, много объектов Event, которые строятся по каждому кадру.

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

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

Эти подходы, очевидно, связаны с созданием собственной модели событий и не могут повлиять на работу существующей модели с встроенными объектами.

+0

Путем объединения объектов, вы хотите создать серию объектов Event, которые будут использоваться, и снова перерабатывать одни и те же объекты снова и снова? Если да, не могли бы вы рекомендовать держать их в статической константе, скажем, в каком-то классе помощника или в классе, который будет их использовать? –

+0

@JS Основная идея заключается в создании класса «Пул», который будет содержать список «переработанных» объектов. Пул определяет максимальный размер пула и имеет геттер, который либо вернет объект из пула, либо создаст новый, и вернет его, если пул пуст. – Marty

+0

Это имеет смысл. Вы бы рекомендовали использовать вектор в качестве переменной экземпляра и иметь уникальный класс пула для каждого типа данных, который должен быть сохранен, и таким образом, используя максимальный размер, о котором вы упомянули, вы можете просто сдвинуть нижний элемент и поддерживать максимальное использование памяти? –

Смежные вопросы