Премахване на слушател на събития - метод AS3 removeEventListener

В този урок ще разгледаме 2 въпроса:

  1. Премахване на слушател на събития - метод AS3 removeEventListener
  2. Допълнителна информация

В определени ситуации трябва да премахнете слушателя на събития, прикачен към обекта. Например, в игра има моменти, когато искате потребителят да щракне върху бутон само веднъж. След това действие бутонът или изчезва, или е деактивиран, т.е. става неизползваем. Или, например, сте решили на вашия флаш сайт в менюто за навигация да деактивирате бутона, който препраща към определен раздел на сайта. Или. С една дума, както виждате, има много случаи, така че трябва да знаете как да го направите.

И така, премахването на слушател на събития се извършва чрез извикване на методаAS3 removeEventListener. Както при addEventListener, той приема два аргумента:

  • тип събитие
  • манипулатор на събития за премахване

След премахване на слушателя на събития, т.е. след като се приложи методът AS3 removeEventListener, обектът спира да отговаря на събитието, но можете лесно да го възстановите, като добавите отново слушателя на събития към този обект. Често самият манипулатор премахва слушателя на събития, т.е. в скрипта на манипулатора записвате всички необходими действия, които трябва да се извършат след задействане на събитието, плюс премахването на слушателя на събитие, който е задействал този манипулатор.

Винаги проверявайте дали събитието и неговия манипулатор съвпадат за addEventListener и removeEventListener - те трябва да са идентични! В противен случай очаквайте съобщение за грешка или непредвидимо поведение на обектите на проекта. В примера по-долу ще разгледаме случая, когато манипулаторът на събития премахва слушателя на събития, прикачен към бутона, т.е. ще работи само веднъж.

Премахване на слушател на събития - метод AS3 removeEventListener

В тялото на манипулаторната функция запишете името на обекта, който е бил използван за повдигане на събитието, и поставете точка.

След запетаята въведете името на манипулатора на събитието и включете точка и запетая след затварящата скоба.

В крайна сметка вашият код трябва да изглежда така:

removeeventlistener

Дайте на екземпляра на Stage същото име, което сте използвали при писане на слушателя на събития в началото на този пример (вижте Създаване на символ във Flash CS5 и Създаване на екземпляр. Наименуване на екземпляр).

метод

НатиснетеCtrl + Enter.

Видеото ще започне да се възпроизвежда.

Задействане на събитие - щракване върху обект.

В панела за изход ще се появи съобщение.

Кликнете върху обекта отново. Нищо няма да стане, защото слушателят на събития е премахнат и манипулаторът за това събитие вече не се извиква.

Допълнителна информация

Добра практика е да премахнете слушателите на събития, когато вече не са необходими. Те са взискателни към ресурсите на паметта, така че оставянето им активни, след като са изпълнили мисията си, е непозволен лукс! Те просто губят ресурси, които биха могли да бъдат използвани за други по-полезни цели. Например, вие решавате, че само горните две нива трябва да бъдат активни в многостепенно меню. И ако е така, тогава трябва да премахнете слушателите на събития в бутоните на третото ниво и по-долу (ако има такива бутони).

Този проблем е особено важен във флаш игрите. В игри със стрелба, например, целите са екземпляри от съответния потребителски клас. Всеки от тях има прикачен слушател на събития. След като целта бъде ударена и премахната от сцената, нейният слушател на събития оставас него, губейки ресурси, от които вече не се нуждае!