![]() |
Параметры "addEventListener"
addEventListener имеет 5 параметров. с первыми 2-мя как-бы все понятно. а зачем нужны последние 3?
|
Об этом написано в хелпе.
|
Цитата:
|
useCapture - подписаться на фазу захвата или на фазу бабблинга и таргета. Подробнее - в теме 100 tips & tricks.
useWeakReference - вроде доходчиво объяснено. При false он защищен от GC, при true - нет. Подробнее - в той же теме. |
useWeakReference:Boolean (default = false) — Determines whether the reference to the listener is strong or weak. A strong reference (the default) prevents your listener from being garbage-collected. A weak reference does not.
Сильная сслыка (изначально, по дефолту) защищает ваш листенер от возможности быть схаванным злобным GC. Слабая ссылка позволяет скушать (убрать листенер автоматически). |
РЕКОМЕНДАЦИИ ПО ИСПОЛЬЗОВАНИЮ ДОПОЛНИТЕЛЬНЫХ ПАРАМЕТРОВ СЛУШАТЕЛЕЙ СОБЫТИЙ
Сборка мусора Сборка мусора - метод, применяемый Flash Player для очистки памяти от объектов, которые больше не нужны. Как правило, на начальном этапе изучения ActionScript 3.0 нет необходимости глубоко погружаться в изучение вопросов сборки мусора и управления памятью. Однако существуют не слишком сложные приемы написания кода, применение которых вполне безболезненно даже в начале процесса обучения, а в дальнейшем может стать весьма полезной привычкой. К таким приемам относится и сборка мусора. Метод addEventListener() имеет три дополнительных необязательных параметра, указываемых в конце списка параметров. Код AS3:
Параметр useCapture управляет тем, будет ли отслеживаемое событие обрабатываться до того, как оно достигнет целевого объекта (если параметр имеет значение true), или же только когда оно достигнет целевого объекта (значение false) либо «всплывает» вверх по списку отображения. По умолчанию используется значение false, указывающее слушателю реагировать на событие только при достижении событием целевого объекта или после этого. Вероятно, в большинстве случаев вы будете использовать именно такую настройку. Второй параметр, priority, определяет порядок выполнения различных слушателей, установленных для одного и того же события и одной и той же фазе. Как правило, в изменении этой настройки нет необходимости, и значение 0, используемое по умолчанию, прекрасно подойдет в большинстве ситуаций. Третий параметр, weakReference, на наш взгляд, вам стоит изучить более подробно, чтобы в дальнейшем использовать в своем коде. Говоря в общих чертах, он облегчает управление памятью в том случае, если вы небрежно отнеслись к удалению ненужных слушателей событий. В ActionScript 3.0 действия по управлению памятью, не контролируемые вами явным образом, совершаются в фоновом режиме специальным сборщиком мусора. Когда в вашем приложении больше не остается ссылок на некоторый объект, этот объект помечается как кандидат на удаление, и сборщик мусора периодически удаляет такие объекты, освобождая место в памяти. Однако если ссылка на объект остается, сборщик мусора не сможет определить, что объект пора удалить из памяти. Несмотря на все старания, разработчики нередко забывают удалить лишние слушатели событий в своем коде. В этом случае практически идеальным решением является слушатель со слабой (weak) ссылкой. Идея проста: сборщик мусора при подсчете ссылок на объект не обращает внимания на слушатели со слабыми ссылками, и поэтому нет необходимости вручную помечать их для удаления. Если после того, как объект выполнил свое предназначение, остались только слабые ссылки на него, он становится законной добычей сборщика мусора. Данную возможность очень легко использовать - достаточно лишь изменить значение параметра weakReference метода addEventListener() на true (по умолчанию - false). Поскольку этот параметр является третьим по счету, необходимо указать также значения двух предыдущих параметров, чтобы Flash правильно распознал, какому параметру присваивается новое значение. Поскольку значения первых двух параметров изменяются довольно редко, вы можете использовать упомянутые выше настройки по умолчанию (false для useCapture и 0 для priority). Итак, мы рекомендуем вызывать метод addEventListener() следующим образом: Код AS3:
Рич Шуп, Зеван Россер - "Изучаем ActionScript 3.0 От простого к сложному". |
| Часовой пояс GMT +4, время: 07:55. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.