Curs Flash

Evenimentele (events) sunt actiuni realizate in prezentarea Flash de catre utilizator sau de alte elemente din acea prezentare.
De exemplu, click-ul sau pozitionarea mouse-ului pe un element din Flash, scrierea intr-un camp Text Input, sunt evenimente facute de utilizator; iar, ajungerea la un anumit cadru a unei animatii sau finalizarea unei actiuni sunt evenimente realizate de elemente din prezentare.
ActionScript 3 contine obiecte si metode speciale pentru detectarea si recunoasterea evenimentelor, in functie de acestea se pot executa anumite instructiuni cand acele evenimente se produc.
Ca majoritatea lucrurilor in ActionScript 3, evenimentul este considerat obiect, deoarece are proprietati unde sunt stocate informatii despre el si metode pentru lucru cu datele lui.
• Pe scurt, un eveniment lucreaza astfel: elementul legat de actiunea produsa, denumit "event target" (eveniment tinta) [un buton apasat, o animatie, etc.) transmite date la script, sub forma unui obiect (denumit "event object"). Scriptul trebuie sa contina o functie speciala cunoscuta ca "event listener" (detector de eveniment), prin care detecteaza evenimentul si preia datele lui pe care apoi le transmite la o functie ce poate efectua diferite comenzi scrise de programator.
Functia /metoda folosita in ActionScript 3 pentru a detecta si captura evenimente este "addEventListener()". E o metoda din clasa "EventDispatcher", si inregistreaza in script detectarea evenimentului specificat in ea.
Sintaxa generala pentru utilizarea acestei metode este:

- "event_target" este obiectul la care se produce evenimentul (numele de instanta a lui. De ex., a unui buton care va fi apasat).
- "EventObject" reprezinta categoria de evenimente ce trebuie detectata. Este si obiectul in care sunt stocate informatii despre evenimentul produs (De ex., MouseEvent, TextEvent).
- "TIP" este o constanta ce reprezinta tipul evenimentului (cum ar fi: CLICK, MOUSE_OVER, COMPLETE) din categoria specificata.
            - Formula "event_object.TIP" precizeaza exact evenimentul ce trebuie recunoscut si preluat. De ex., "MouseEvent:CLICK" are ca detectare momentul cand se da click (pe "event_target"), sau, "Event.COMPLETE" detecteaza cand o actiune este finalizata (terminata).
- "oFunctie" este functia care va fi apelata cand e realizat evenimentul, si va fi executat codul din ea.
- "ins_EventObject" este instanta la obiectul "EventObject" prin care pot fi utilizate (procesate) datele transmise in acel obiect.

ActionScript 3 are o multime de evenimente ce pot fi recunescute, cum ar fi: MouseEvent (pt. mouse), KeyboardEvent (pt. tastatura), TextEvent (pt. campuri de text), ScrollEvent (pt. Scroll), IOErrorEvent (pt. cazuri cand apar erori), si altele. Unele din ele, cele mai utilzate, vor fi prezentate in lectiile urmatoare. Lista cu toate tipurile de evenimente, proprietatile, metodele si constantele lor poate fi gasita la pagina Evenimente AS3.

Iata un exemplu practic de utilizare a detectarii unui eveniment. Cu acesta se realizeaza afisarea intr-un camp text din prezentarea Flash a unui continut preluat (incarcat) dintr-un fisier TXT extern.
// Creare "event target"
// O instanta a obiectului URLLoader (pt. incarcare date de la o adresa URL
var urlLoader:URLLoader = new URLLoader( );

// Aplica metoda "load()" (de incarcare) la instanta URLLoader
// La argument creaza o instanta URLRequest pentru specificare adresa fisier
urlLoader.load(new URLRequest("un_fisier.txt"));

// Setare "event listener", cu eveniment de detectare a finalizarii unei actiuni
// Aplicat la "urlLoader", recunoaste cand incarcarea fisierului s-a terminat
urlLoader.addEventListener(Event.COMPLETE, campTxt);

// Functia care va fi apelata de evenimentul setat
function campTxt(evt:Event):void
{
  // Se defineste Instanta de obiect TextField pt. creare camp text
  var camp_txt:TextField = new TextField();
  camp_txt.x = 93;                 // Distanta fata de marginea din stanga
  camp_txt.y = 75;                  // Distanta fata de marginea de sus
  camp_txt.width = 125;             // Lungimea campului de text
  camp_txt.height = 50;             // Inaltimea
  camp_txt.border = true;           // Activeaza afisarea unei borduri

  // Adauga in campul de text datele incarcate din fisier, stocate in "evt"
  camp_txt.text = evt.target.data;

  addChild(camp_txt);        // Adauga campul de text in prezentarea Flash
}
- La inceput trebuie creata o instanta la obiectul "URLLoader", cu aceasta va fi preluat (incarcat in Flash) continutul dintr-un fisier extern. Adresa URL de incarcare trebuie adaugata la aceasta instanta cu obiectul "URLRequest". Aceleiasi instante i-se aplica metoda "addEventListener()", la care se specifica sa recunoasca tipul de eveniment "Event.COMPLETE" (activat la finalizarea unei actiuni, aici cea de incarcare).
- Cand incarcarea facuta de "urlLoader" se termina, e activat evenimentul inregistrat la acea instanta, care detecteaza finalizarea incarcarii. Atunci preia datele si le transmite la functia "campText", aceasta le retine in variabila (parametru) "evt", creaza un camp de text si cu expresia "evt.target.data" adauga datele preluate in camp si le afiseaza in prezentarea Flash.
- Studiati si explicatiile din cod.
Daca adaugati acest cod intr-un document Flash nou, faceti prezentarea SWF (cu Export) si in acelasi director creati si "un_fisier.txt" cu un text in el, va rezulta o prezentare Flash ca aceasta:

Adresa URL a fisierului, adaugata la "URLRequest("URL_fisier")", trebuie sa fie completa sau relativa la prezentarea Flash, in functie de directotul in care se afla.

Stergere detectare eveniment

Pentru a opri un "detector de eveniment" (event listener) setat cu "addEventListener()" sa primeasca notificari despre evenimentul ineregistrat, trebuie stearsa acea inregistrare, cu metoda "removeEventListener()" (apartine clasei "EventDispatcher").
Formula generala de utilizare a acestei metode este
                event_target.removeEventListener(EventObject.TIP, oFunctie);
- "event_target" reprezinta instanta la care a fost aplicat detectorul de eveniment "addEventListener()" care trebuie sters.
- "EventObject.TIP" e tipul evenimentului.
- "oFunctie" e functia care a fost setata sa fie apelata.

Este indicata stergerea inregistrarii de detectare a unui eveniment, cand nu mai e necesara in program, deoarece ajuta la eliberarea memoriei folosite si a procesorului.
Evenimentul inregistrat e permanent activ si in legatura cu functia pe care o apeleaza (lucru stocat in memorie) pana cand e sters cu "removeEventListener()".

Iata in exempul prezentat mai sus cum trebuie alicata metoda
// Creare "event target"
// O instanta a obiectului URLLoader (pt. incarcare date de la o adresa URL
var urlLoader:URLLoader = new URLLoader( );

// Aplica metoda "load()" (de incarcare) la instanta URLLoader
// La argument creaza o instanta URLRequest pentru specificare adresa fisier
urlLoader.load(new URLRequest("un_fisier.txt"));

// Setare "event listener", cu eveniment de detectare a finalizarii unei actiuni
// Aplicat la "urlLoader", recunoaste cand incarcarea fisierului s-a terminat
urlLoader.addEventListener(Event.COMPLETE, campTxt);

// Functia care va fi apelata de evenimentul setat
function campTxt(evt:Event):void
{
  // Se defineste Instanta de obiect TextField pt. creare camp text
  var camp_txt:TextField = new TextField();
  camp_txt.x = 100;                 // Distanta fata de marginea din stanga
  camp_txt.y = 75;                  // Distanta fata de marginea de sus
  camp_txt.width = 100;             // Lungimea campului de text
  camp_txt.height = 50;             // Inaltimea
  camp_txt.border = true;           // Activeaza afisarea unei borduri

  // Adauga in campul de text datele incarcate din fisier, stocate in "evt"
  camp_txt.text = evt.target.data;

  addChild(camp_txt);        // Adauga campul de text in prezentarea Flash

  // Dupa ce campul e adagat in prezentare, cu continutul incarcat
  // Sterge inregistrarea de detectare a acestui eveniment, pt. a elibera memoria
  urlLoader.removeEventListener(Event.COMPLETE, campTxt);
}
- instructiunea "urlLoader.removeEventListener(Event.COMPLETE, campTxt);" e adaugata in functia "campTxt()" dupa comanda de afisare a campului de text cu continutul incarcat din fisierul extern. Astfel, aceasta instructiune este executata dupa ce se termina rolul evenimentului de preluare a datelor incarcate si afisarea lor, prin urmare nu mai e necesara pasrtrarea lui in memorie.
- Daca aceasta instructiune ar fi scrisa in afara functiei apelate, "campText()", ar avea ca efect stergerea detectarii evenimentului inainte ca funcia sa fi fost apelata si nu va mai fi executata deoarece evenimentul nu mai e detectat.

Prioritatea de capturare evenimente

In mod normal, daca sunt mai multe detectoare de eveniment inregistrate la acelasi obiect (cu tipuri egale sau diferite), ordinea de capturare si declansare a lor e cea in care sunt scrise in script. Dar aceasta ordine poate fi schimbata, folosind un "parametru de prioritate" in metoda "addEventListener()", dupa formula:
                event_target.addEventListener(EventObject.TIP, oFunctie, useCapture, prioritate);
- La "useCapture" se pune valoarea false
- "prioritate" e un numar intreg mai mare sau egal decat zero, prin care se determina prioritatea de executie (default are valoarea 0). Detectorul de evenimente cu prioritatea mai mare este declansat inaintea celorlati.
De exemplu, la urmatoarele 2 evenimente inregistrate:

urlLoader.addEventListener(Event.COMPLETE, oFunctie, false, 0);
urlLoader.addEventListener(Event.COMPLETE, altaFunctie, false, 1);
- Este declansat intai cel cu prioritatea 1, care apeleaza "altaFunctie", apoi, se executa cel setat cu prioritatea 0.

- Fisierele FLA cu exemplele din aceasta lectie pot fi descarcate de la:
  1. Detectare evenimente
  2. Stergere eveniment

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag adauga rand nou in paragraf?
<b> <br> <p>
Prima linie ...<br>
Alta linie...
Ce proprietate CSS seteaza spatiu dintre litere?
text-size word-spacing letter-spacing
#id {
  letter-spacing: 2px;
}
Ce functie obtine accesul la un element HTML cu un anumit ID?
getElementById() getElementsByTagName() createElement()
var elm = document.getElementById("theID");
var content = elm.innerHTML;
alert(content);
Clic pe instructiunea "echo" utilizata corect.
echo "CoursesWeb.net" echo "CoursesWeb.net"; echo ""CoursesWeb.net";
echo "Adresa URL: http://CoursesWeb.net";
Care din urmatoarele expresii cu "paint" (a picta) se foloseste pentru forma Negativa?
will paint not paint have painted
She does not paint that landscape.
- Ea nu picteaza acel peisaj.
Care din urmatoarele expresii cu "cantar" (a canta) se foloseste pentru propozitie Negativa?
ir a cantar cantaba no cantar
Ella no canta esa canciĆ³n.
- Ea nu canta acel cantec.
Detectare evenimente ActionScript 3

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (269997)
  2. Verbe modale - SHALL, SHOULD, OUGHT TO, WILL, WOULD, USED TO, BE TO, DARE (33195)
  3. Accentul si Pronuntia (27627)
  4. Verbe modale - Modal verbs - CAN, COULD, MAY, MIGHT, MUST (66767)
  5. Prezentul simplu - Exercitii si teste incepatori (68696)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1036)
  2. Gramatica limbii engleze - Prezentare Generala (654)
  3. Exercitii engleza - English Tests and exercises - Grammar (594)
  4. Prezentul simplu si continuu - Present Tense Simple and Continuous (474)
  5. Coduri pt culori (395)