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 tag adauga imagine in pagina web?
<div> <img> <span>
<img src="http://coursesweb.net/imgs/webcourses.gif" width="191" height="63" alt="Courses-Web" />
Care din aceste coduri CSS afiseaza textul inclinat?
font-style: italic; text-decoration: underline; font-weight: 500;
#id {
  font-style: italic;
}
Clic pe functia jQuery care ascunde animat un element HTML.
click() hide() show()
$(document).ready(function() {
  $(".a_class").click(function(){ $(this).hide("slow"); });
});
Clic pe functia definita corect in PHP.
fname function() {} function fname() {} function $fname() {};
function fname($a, $b) {
  echo $a * $b;
}
Indicati forma pentru Prezent Perfect Continuu a verbului "to walk" (a merge).
have walked have been walking be walking
I have been walking for 5 hours.
- Merg pe jos de 5 ore.
Indicati Trecutul Nedefinit pentru verbul "ser" (a fi) la forma Yo.
será sería fui
Yo fui entrenador.
- Am fost antrenor.
Creare evenimente noi

Last accessed pages

  1. Curs HTML gratuit Tutoriale HTML5 (188483)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (261598)
  3. Download resurse Adobe Flash si ActionScript 3.0 (340)
  4. Conditional IF in Limba Engleza - Fraze Conditionale (120723)
  5. Exercitii engleza - English Tests and exercises - Grammar (109989)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1242)
  2. Curs HTML gratuit Tutoriale HTML5 (952)
  3. Coduri pt culori (714)
  4. Creare si editare pagini HTML (566)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (519)
Chat
Discuta sau lasa un mesaj pt. ceilalti utilizatori
Full screenInchide