Curs Flash

Pe langa evenimentele (events) prestabilite in ActionScript 3 (MouseEvent, KeyboardEvent, etc.) pot fi create si altele noi (Custom Events), prin extinderea clasei EventDispatcher.
- "EventDispatcher" e clasa de baza pt. evenimente.


Pentru a invata cum se creaza un eveniment nou, studiati urmatorul exemplu.
Se creaza o clasa (Game) ca extindere a clasei "EventDispatcher". Aceasta trebuie apelata cu un numar ca argument (definit ca parametru "end" a metodei constructor).

Clasa Game

// Clasa Game (cu un "Custom Event")
package {
  // Importa clasele a caror metode sunt folosite
  import flash.events.*;           // Pt. a putea utiliza /extinde clasa EventDispatcher
  import flash.utils.*;            // Necesara pt. setTimeout

 // Creare clasa Game ca extindere la EventDispatcher
 public class Game extends EventDispatcher
 {
  // Se defineste o constanta ce va reprezenta numele noului eveniment
  // Valoarea ei da numele evenimentului
  public static const GAME_OVER:String = 'gameOver';

  // Proprietate privata, folosta doar in clasa pt. retinerea numaratorii
  private var sec:int = 0;

  // Metoda constructor a clasei
  public function Game(end:int)
  {
    // Apeleaza functia "numara()" cu proprietatea "sec" ca argument
    numara(this.sec);

    // Functia "numara()" in cadrul constructorului (apelata prin instructiunea de mai sus)
    function numara(sec:int):void
    {
      // Daca proprietatea 'sec' are valoarea 3, apeleaza metoda "endGame()"
      if(this.sec==end) endGame();
      // Altfel
      else
      {
        trace(sec);                  // Afiseaza in Output valoaarea parametrului 'sec'
        this.sec = sec+1;            // Modifica valoarea proprietatii "sec" cu cea din parametru + 1
        // "this.sec" este proprietatea, 'sec' simplu e parametru functiei

        // Apeleaza functie "numara" la fiecare secunda, cu proprietatea "sec" ca argument
        setTimeout(numara, 1000, this.sec);
      }
    }
  }

  // Metoda privata, apelata cand "sec" ajunge la valoarea parametrului "end"
  // "end" e parametru metodei constructor si trebuie transmis la crearea instantei clasei
  private function endGame():void
  {
    // Declanseaza evenimentul creat si reprezentat de aceasta clasa
    dispatchEvent(new Event(Game.GAME_OVER));
  }
 }
}
- Clasa Game contine o constanta "GAME_OVER" care va reprezenta numele evenimentului, o proprietate privata "sec" (folosita doar in corpul clasei) si o metoda privata "endGame()" care declanseaza evenimentul creat si reprezentat de aceasta clasa.
- Metoda constructor incrementeaza cu o unitate la fiecare secunda valoarea proprietatii "sec", afiseaza numarul in Output, iar cand acesta ajunge egal cu valoarea transmisa ca argument la crearea instantei, apeleaza metoda "endGame()", care va declansa evenimentul "Game.GAME_OVER". Pt. alte ddetalii studiati explicatiile din cod.
- Aceasta clasa trebuie adaugata intr-un document "ActionScript 3.0 Class", apoi salvat cu numele "Game.as" in acelasi director unde e si documentul FLA care o va folosi.

In documentul Flash se adauga urmatorul cod ActionScript:
// Creare instanta la clasa Game, cu un numar ca argument
var game:Game = new Game(3);

// Inregistrare pt. detectarea evenimentului Game.GAME_OVER
game.addEventListener(Game.GAME_OVER, gameOverListener);

// Se poate folosi si ('gameOver', gameOverListener),
// cu numele evenimentului ca parametru 'gameOver', valoarea data in clasa la GAME_OVER

// Functia apelata cand evenimentul e declansat
function gameOverListener (evt:Event):void
{
  trace('Jocul s-a terminat!');
}
- Observati cum e inregistrat evenimentul creat de clasa Game ( Game.GAME_OVER ), ca oricare alt tip de eveniment din ActionScript, cu "addEventListener()" aplicat la instanta acestei clase. "Game" este evenimentul si "GAME_OVER" numele lui.
- Cand proprietatea "sec" din clasa ajunge la numarul 3 (sau oricare e adaugat la 'new Game(nr)'), se apeleaza metoda "endGame()" care declanseaza evenimentul. Aceasta declansare e recunoscuta de inregistrarea facuta cu "addEventListener()" care apeleaza functia "gameOverListener()".
- In Output va afisa: 0 1 2 Jocul s-a terminat!.

De obicei clasa prin care e creat evenimentul nou se foloseste in combinatie cu alta clasa pe care o apeleaza la declansarea evenimentului.


Fisierul FLA si "Game.as" cu exemplu din aceasta lectie pot fi descarcate de la: Creare evenimente noi.

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.
Creare evenimente noi

Last accessed pages

  1. Liste HTML - UL, OL (11474)
  2. Subjunctiv - Verbe neregulate (2173)
  3. Limba spaniola curs online incepatori si avansati (31591)
  4. Ferestre Alert Prompt si Confirm (3331)
  5. Like si As - Exercitii engleza incepatori (6086)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (321)
  2. Gramatica limbii spaniole. Indrumator si prezentare generala (227)
  3. Gramatica limbii engleze - Prezentare Generala (126)
  4. Limba spaniola curs online incepatori si avansati (118)
  5. Teste spaniola - Tests y ejercicios de Español - Gramática (114)