![]() |
Оптимизация событий
Всем привет. Я здесь новичок, и на AS3 тоже)
Недавно наткнулся здесь на одно интересное сообщение. Там говорилось, что якобы надо экономить на Слушателей событий. У меня есть приложение на AS3, и в нем очень много кнопок, формы для фокуса и т.д. Вопрос лишь в том, какие еще способы существуют обхода или экономия Слушателей? Ведь слабые ссылки не всегда бывают к месту, полагаю доверятся Сборщику нужно не всегда. А удалять после вызова со Стейджа вообще не хочется. Может и ошибаюсь. Подскажите в чем подвох? Добавлено через 22 минуты Извиняюсь господа. Только что нашел нужный ответ на свой вопрос. http://help.adobe.com/ru_RU/as3/mobi...ng_content.pdf Прям то что надо. Захват событий и цепочка событий. Тему можете закрывать. |
Прежде всего, не забывайте отписываться от событий которые уже не нужны.
И также, хорошим тоном считается подписываться на события только тогда, когда они гарантировано могут возникнуть. И что значит "удалять после вызова со Стейджа вообще не хочется", слабо понял. |
Для начала неплохо бы определится со следующими вещами:
- В какой области существует проблема? Если проблемы пока что нет, это не значит, что ее не существует, это значит, что вы ее еще не нашли, но пока не найдете - решать бесполезно. - Если проблема обнаружена в использовании памяти - с этим нужно бороться отдельно. И тут слушатели ни при чем, т.как слушатели это функции, их все равно одинаковое количество (если вы не используете динамически созданные функции). Ваша задача определить объекты, которые занимают память. Это может быть объекты, которые должны были быть удалены, но не были удалены потому, что все еще подписаны на события. В таком случае находите такие объекты, определяете, когда они уже не нужны, и отписываете их от событий. Это могут быть объекты событий, которые вы производите в чрезмерных количествах - руководствуясь здравым смыслом вы часто можете сократить количество созданных событий иногда подписавшись на событие только в одном месте, и использовав callback'и в других (так, чтобы не создавать новые объекты). - Если проблема обнаружена в производительности - т.е. функции выполняются медленнее чем хотелось бы - это совсем другая история. Опять же, руководствуясь здравым смыслом почти всегда можно найти способ как заставить тот или иной алгоритм выполнятся быстрее. Это почти наверняка не связано с событиями / слушателями. |
растекаемый ответ на растекаемый вопрос)
|
Цитата:
|
Цитата:
Не могу понять, почему при событии изменения окна (Resize) почти все элементы у меня тормозят? Решил отключить некоторые слушатели, после этого стало немного быстрее, вот и возникла необходимость зарегаться здесь вспомнив то сообщение, что злоупотреблять слушателями не стоит. Но как именно найти ту золотую серединку и более рационально суметь использовать ресурсы проца, не могу понять. Скажем, если на сцене висит около 30 форм, и 5-6 кнопок, а что делать в таком случае? |
Цитата:
|
Цитата:
Речь о событиях которые возникают например один раз, загрузка настроек из XML, или запрос на сервер. Вообще в таких случаях принято применять такую практику: Допустим есть какая-то кнопка, и при нажатии на неё загружается XML. Слушатель на кнопке пусть будет всегда, а вот слушатели на тот самый URLLoader необходимо добавлять только после нажатия на кнопку, и удалять после любого результата загрузки. |
не он походу растягивает какое-то окно и при изменении размера на каждый пиксель (ну чаще чем интерфрейм в фпс игре) у него идет рассылка по всем компонентам
|
При resize безусловно должен быть какой-то update, но в этом плане было бы полезно осуществить что-то похожее на commitProperties и Invalidate которые во Flex
Если подробнее - нужно просто проверять действительно изменяемые свойства, и обновлять их. Соответственно перерисовывать тоже только изменяемые объекты. Тогда и производительность будет больше. |
| Часовой пояс GMT +4, время: 18:36. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.