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 HTML5 defineste un text marcat, evidentiat?
<mark> <embed> <span>
<p>Cursuri graruite: <mark>MarPlo.net</mark> , jocuri, anime.</p>
Ce pseudo-clasa CSS defineste un stil la element cand mouse-ul e deasupra lui?
:focus :hover :active
a:hover {
  font-weight: bold;
  color: #00da01;
}
Clic pe functia ce returneaza un sir cu un numar rotunjit la x decimale.
toPrecision(x) toFixed(x) floor(x)
var num = 12.34567;
num = num.toFixed(2);
alert(num);       // 12.35
Indicati functia PHP care adauga continutul unui fisier intr-un array.
[) file() readfile()
$arr = file("a_file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
var_export($arr);
Clic pe raspunsul potrivit la intrebarea: "What time is it?"
On the 7th of July 1996 It is a quarter to 5. Nice weather.
What time is it? It is a quarter to 5.
- Cat este ora? E 5 fara un sfert.
Indicati raspunsul potrivit la intrebarea: "¿Qué hora es?"
Hace buen tiempo. En el 7 de julio de 1996 Son las tres menos cuarto.
¿Qué hora es? Son las tres menos cuarto.
- Cat este ora? E 3 fara un sfert.
Creare evenimente noi

Last accessed pages

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (271708)
  2. Cursuri limba engleza gratuite si lectii online (64961)
  3. Limba spaniola curs online incepatori si avansati (29478)
  4. Download carti electronice si programe pentru Limba Engleza (43793)
  5. Cursuri Limba Rusa (5724)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (505)
  2. Cursuri limba engleza gratuite si lectii online (211)
  3. Coduri pt culori (190)
  4. Gramatica limbii engleze - Prezentare Generala (184)
  5. Gramatica limbii spaniole. Indrumator si prezentare generala (167)