![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2012
Сообщений: 9
|
Всем привет. Я здесь новичок, и на AS3 тоже)
Недавно наткнулся здесь на одно интересное сообщение. Там говорилось, что якобы надо экономить на Слушателей событий. У меня есть приложение на AS3, и в нем очень много кнопок, формы для фокуса и т.д. Вопрос лишь в том, какие еще способы существуют обхода или экономия Слушателей? Ведь слабые ссылки не всегда бывают к месту, полагаю доверятся Сборщику нужно не всегда. А удалять после вызова со Стейджа вообще не хочется. Может и ошибаюсь. Подскажите в чем подвох? Добавлено через 22 минуты Извиняюсь господа. Только что нашел нужный ответ на свой вопрос. http://help.adobe.com/ru_RU/as3/mobi...ng_content.pdf Прям то что надо. Захват событий и цепочка событий. Тему можете закрывать. |
|
|||||
|
Прежде всего, не забывайте отписываться от событий которые уже не нужны.
И также, хорошим тоном считается подписываться на события только тогда, когда они гарантировано могут возникнуть. И что значит "удалять после вызова со Стейджа вообще не хочется", слабо понял.
__________________
adobe AS3 manual |
|
|||||
|
Modus ponens
|
Для начала неплохо бы определится со следующими вещами:
- В какой области существует проблема? Если проблемы пока что нет, это не значит, что ее не существует, это значит, что вы ее еще не нашли, но пока не найдете - решать бесполезно. - Если проблема обнаружена в использовании памяти - с этим нужно бороться отдельно. И тут слушатели ни при чем, т.как слушатели это функции, их все равно одинаковое количество (если вы не используете динамически созданные функции). Ваша задача определить объекты, которые занимают память. Это может быть объекты, которые должны были быть удалены, но не были удалены потому, что все еще подписаны на события. В таком случае находите такие объекты, определяете, когда они уже не нужны, и отписываете их от событий. Это могут быть объекты событий, которые вы производите в чрезмерных количествах - руководствуясь здравым смыслом вы часто можете сократить количество созданных событий иногда подписавшись на событие только в одном месте, и использовав callback'и в других (так, чтобы не создавать новые объекты). - Если проблема обнаружена в производительности - т.е. функции выполняются медленнее чем хотелось бы - это совсем другая история. Опять же, руководствуясь здравым смыслом почти всегда можно найти способ как заставить тот или иной алгоритм выполнятся быстрее. Это почти наверняка не связано с событиями / слушателями.
__________________
Hell is the possibility of sanity |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
растекаемый ответ на растекаемый вопрос)
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Mar 2012
Сообщений: 9
|
Имел в виду, что те самые важные элементы на сцене будут использоваться часто, и отписываться от них ради оптимизации, рисковать то есть не хочется.
|
|
|||||
|
Регистрация: Mar 2012
Сообщений: 9
|
Цитата:
Не могу понять, почему при событии изменения окна (Resize) почти все элементы у меня тормозят? Решил отключить некоторые слушатели, после этого стало немного быстрее, вот и возникла необходимость зарегаться здесь вспомнив то сообщение, что злоупотреблять слушателями не стоит. Но как именно найти ту золотую серединку и более рационально суметь использовать ресурсы проца, не могу понять. Скажем, если на сцене висит около 30 форм, и 5-6 кнопок, а что делать в таком случае? |
|
|||||
|
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
показалось
|
|
|||||
|
Цитата:
Речь о событиях которые возникают например один раз, загрузка настроек из XML, или запрос на сервер. Вообще в таких случаях принято применять такую практику: Допустим есть какая-то кнопка, и при нажатии на неё загружается XML. Слушатель на кнопке пусть будет всегда, а вот слушатели на тот самый URLLoader необходимо добавлять только после нажатия на кнопку, и удалять после любого результата загрузки.
__________________
adobe AS3 manual |
|
|||||
|
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
не он походу растягивает какое-то окно и при изменении размера на каждый пиксель (ну чаще чем интерфрейм в фпс игре) у него идет рассылка по всем компонентам
|
|
|||||
|
При resize безусловно должен быть какой-то update, но в этом плане было бы полезно осуществить что-то похожее на commitProperties и Invalidate которые во Flex
Если подробнее - нужно просто проверять действительно изменяемые свойства, и обновлять их. Соответственно перерисовывать тоже только изменяемые объекты. Тогда и производительность будет больше.
__________________
adobe AS3 manual |
![]() |
![]() |
Часовой пояс GMT +4, время: 17:47. |
|
|
« Предыдущая тема | Следующая тема » |
|
|