|
|
|||||
Параметры "addEventListener"
addEventListener имеет 5 параметров. с первыми 2-мя как-бы все понятно. а зачем нужны последние 3?
|
|
|||||
Цитата:
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
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. Слабая ссылка позволяет скушать (убрать листенер автоматически). |
|
|||||
Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
|
РЕКОМЕНДАЦИИ ПО ИСПОЛЬЗОВАНИЮ ДОПОЛНИТЕЛЬНЫХ ПАРАМЕТРОВ СЛУШАТЕЛЕЙ СОБЫТИЙ
Сборка мусора Сборка мусора - метод, применяемый Flash Player для очистки памяти от объектов, которые больше не нужны. Как правило, на начальном этапе изучения ActionScript 3.0 нет необходимости глубоко погружаться в изучение вопросов сборки мусора и управления памятью. Однако существуют не слишком сложные приемы написания кода, применение которых вполне безболезненно даже в начале процесса обучения, а в дальнейшем может стать весьма полезной привычкой. К таким приемам относится и сборка мусора. Метод addEventListener() имеет три дополнительных необязательных параметра, указываемых в конце списка параметров. eventTarget.addEventListener(EventType.EVENT_NAME, eventResponse, useCapture:Boolean, priority:int, weakReference:Boolean); // Параметр useCapture управляет тем, будет ли отслеживаемое событие обрабатываться до того, как оно достигнет целевого объекта (если параметр имеет значение true), или же только когда оно достигнет целевого объекта (значение false) либо «всплывает» вверх по списку отображения. По умолчанию используется значение false, указывающее слушателю реагировать на событие только при достижении событием целевого объекта или после этого. Вероятно, в большинстве случаев вы будете использовать именно такую настройку. Второй параметр, priority, определяет порядок выполнения различных слушателей, установленных для одного и того же события и одной и той же фазе. Как правило, в изменении этой настройки нет необходимости, и значение 0, используемое по умолчанию, прекрасно подойдет в большинстве ситуаций. Третий параметр, weakReference, на наш взгляд, вам стоит изучить более подробно, чтобы в дальнейшем использовать в своем коде. Говоря в общих чертах, он облегчает управление памятью в том случае, если вы небрежно отнеслись к удалению ненужных слушателей событий. В ActionScript 3.0 действия по управлению памятью, не контролируемые вами явным образом, совершаются в фоновом режиме специальным сборщиком мусора. Когда в вашем приложении больше не остается ссылок на некоторый объект, этот объект помечается как кандидат на удаление, и сборщик мусора периодически удаляет такие объекты, освобождая место в памяти. Однако если ссылка на объект остается, сборщик мусора не сможет определить, что объект пора удалить из памяти. Несмотря на все старания, разработчики нередко забывают удалить лишние слушатели событий в своем коде. В этом случае практически идеальным решением является слушатель со слабой (weak) ссылкой. Идея проста: сборщик мусора при подсчете ссылок на объект не обращает внимания на слушатели со слабыми ссылками, и поэтому нет необходимости вручную помечать их для удаления. Если после того, как объект выполнил свое предназначение, остались только слабые ссылки на него, он становится законной добычей сборщика мусора. Данную возможность очень легко использовать - достаточно лишь изменить значение параметра weakReference метода addEventListener() на true (по умолчанию - false). Поскольку этот параметр является третьим по счету, необходимо указать также значения двух предыдущих параметров, чтобы Flash правильно распознал, какому параметру присваивается новое значение. Поскольку значения первых двух параметров изменяются довольно редко, вы можете использовать упомянутые выше настройки по умолчанию (false для useCapture и 0 для priority). Итак, мы рекомендуем вызывать метод addEventListener() следующим образом: Если вы возьмете за правило использование этой конструкции, вероятность столкнуться с проблемами в области управления памятью из-за небрежного сопровождения кода будет сведена к минимуму. При этом следует помнить, что данный прием не избавляет от необходимости удалять ненужные слушатели, однако он служит отличной страховкой, которую всегда стоит иметь в виду. Рич Шуп, Зеван Россер - "Изучаем ActionScript 3.0 От простого к сложному". Последний раз редактировалось tsarapkabel; 20.08.2010 в 18:26. |
Часовой пояс GMT +4, время: 10:49. |
|
« Предыдущая тема | Следующая тема » |
Теги |
AS3 , flash |
|
|