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
Ce atribut face un buton radio sau checkbox sa fie selectat?
checked="checked" selected="selected" disabled="disabled"
<input type="checkbox" name="a_name" value="value" checked="checked" />
Ce valoare CSS redimensioneaza imaginea de fundal pana la marimea elementului?
repeat-x contain linear-gradient
#id {
  background:url("path_to_image.png");
  background-size:contain;
  background-repeat:no-repeat;
}
Ce operator se foloseste pentru restul impartirii a doua numere?
% * /
var rest8_7 = 8 % 7;
alert(rest8_7);
Indicati functia PHP care rotunjeste numarul la valoarea intreaga mare.
floor() ceil() abs()
$nr = ceil(3.5);
echo $nr;        // 4
Indicati articolul corect la cuvantul "bike" in propozitia: "Alex wants to buy ... bike".
An The A
Alex wants to buy a bike.
- Alex vrea sa cumpere o bicicleta.
Indicati articolul nedefinit corect pentru cuvantul: "libros" (carti)
unos una un
LeĆ­ unos libros.
- Am citit niste carti.
Creare evenimente noi

Last accessed pages

  1. Conditional IF in Limba Engleza - Fraze Conditionale (122559)
  2. Viitor simplu - Exercitii si teste incepatori (12044)
  3. Trecut perfect si Trecutul perfect continuu - Past perfect and Continuous (57512)
  4. Pronume direct (2314)
  5. Caractere speciale - Entitati HTML (13712)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (99)
  2. Exercitii engleza - English Tests and exercises - Grammar (56)
  3. Prezentul simplu - Exercitii si teste incepatori (47)
  4. Cursuri limba engleza gratuite si lectii online (45)
  5. Gramatica limbii engleze - Prezentare Generala (40)