Functia addEventListener

AddEventListener este o functie destul de des utilizata in codul de zi cu zi al unui programator flash, dar are cativa parametri pe care i-am ignorat la inceput si mi-a fost destul de greu sa ii inteleg cand m-am uitat pentru prima oara pe explicatiile date in documentatie.

O scurta descriere a functiei addEventListener ar suna cam asa: Functia ataseaza unui obiect un “listener” care va apela o functie cand un anumit eveniment este declansat.

objTest.addEventListener(MouseEvent.MOUSE_DOWN, onClickHandler);

Exemplu de mai sus ataseaza obiectului objTest un “listener” care, atunci cand apasam pe butonul stanga al mouse-ului pe obiectul objTest, apeleaza functia onClickHandler, in interiorul caruia se poate trata sau nu evenimentul. Primul parametru este de tip String si defineste tipul evenimentului, iar al doilea este de tip Function si este reprezentat de o functie care este apelata cand se declanseaza evenimentul.

In afara de primii 2 parametri, care sunt si obligatorii, mai exista inca 3 care au valori prestabilite, si pot fi, sau nu, mentionati in apelul functiei.

Al 3-lea parametru, numit si useCapture,  este de tip Boolean si are valoarea initiala false. Pentru a intelege rolul acestui parametru trebuie mai intai sa intelegem care sunt fazele prin care trece un eveniment. De la declansare, un eveniment trece prin 3 faze pe care le voi scrie in ordine cronologica: bubbling phase, target phase, capturing phase.

Daca valoarea parametrului useCapture este false (valoare initiala), atunci evenimentul va fi capturat in capturing phase, iar daca useCapture este true evenimentul va fi capturat in bubbling phase. Daca nu ai inteles explicatia, uita-te la urmatoarele exemple:

Exemplul 1:

addEventListener(MouseEvent.MOUSE_DOWN, onClickHandler1, false);
objTest.addEventListener(MouseEvent.MOUSE_DOWN, onClickHandler2);
function onClickHandler1(e:MouseEvent):void{
   trace("eveniment declansat pe scena")
}
function onClickHandler2(e:MouseEvent):void{
   trace("eveniment declansat in obiectul objTest")
}
//rezultat:
//eveniment declansat in obiectul objTest
//eveniment declansat pe scena

Exemplul 2:

addEventListener(MouseEvent.MOUSE_DOWN, onClickHandler1, true);
objTest.addEventListener(MouseEvent.MOUSE_DOWN, onClickHandler2);
function onClickHandler1(e:MouseEvent):void{
   trace("eveniment declansat pe scena")
}
function onClickHandler2(e:MouseEvent):void{
   trace("eveniment declansat in obiectul objTest")
}
//rezultat:
//eveniment declansat pe scena
//eveniment declansat in obiectul objTest

Pentru putimii 2 parametri, citeste Priority & useWeakReference.

1 thought on “Functia addEventListener”

Leave a Reply

Your email address will not be published. Required fields are marked *