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 e folosit pentru a adauga liste cu definitii in element <dl>?
<dt> <dd> <li>
<dl>
 <dt>HTML</dt>
  <dd> - Hyper Text Markup Language</dd>
  <dd> - Limbaj de cod pentru pagini web</dd>
</dl>
Care proprietate CSS poate sa ascunda un element in pagina, lasand spatiu gol in locul lui?
display position visibility
#id {
  visibility: hidden;
}
Indicati evenimentul declansat cand se apasa clic pe un obiect in pagina.
onclick onmouseover onfocus
document.getElementById("id").onclick = function(){
  alert("http://www.MarPlo.net/");
}
Indicati variabila PHP ce contine datele din $_GET, $_POST si $_COOKIE.
$_SESSION $_GET $_REQUEST
if(isset($_REQUEST["id"])) {
  echo $_REQUEST["id"];
}
Care din urmatoarele cuvinte reprezinta un Verb?
lighting believe path
I believe in my path.
- Eu cred in calea mea.
Care din urmatoarele cuvinte reprezinta un Verb?
creer camino iluminaciĆ³n
creer = a crede; camino = cale /drum; iluminaciĆ³n = iluminare
Creare evenimente noi

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (56134)
  2. Definire Variabile si Constante (1320)
  3. Download carti electronice si programe pentru Limba Engleza (17559)
  4. Verbe modale - Modal verbs - CAN, COULD, MAY, MIGHT, MUST (27406)
  5. Prezentul simplu si continuu - Present Tense Simple and Continuous (52768)

Popular pages this month

  1. Prezentul simplu si continuu - Present Tense Simple and Continuous (3734)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (3489)
  3. Gramatica limbii engleze - Prezentare Generala (2830)
  4. Prezent perfect si Prezent perfect continuu - Present perfect and Continuous (2411)
  5. Trecutul simplu si continuu - Past Tense Simple and Continuous (2027)