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.
// 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.
// 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.
De obicei clasa prin care e creat evenimentul nou se foloseste in combinatie cu alta clasa pe care o apeleaza la declansarea evenimentului.
<p>Cursuri graruite: <mark>MarPlo.net</mark> , jocuri, anime.</p>
a:hover { font-weight: bold; color: #00da01; }
var num = 12.34567; num = num.toFixed(2); alert(num); // 12.35
$arr = file("a_file.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); var_export($arr);
What time is it? It is a quarter to 5. - Cat este ora? E 5 fara un sfert.
¿Qué hora es? Son las tres menos cuarto. - Cat este ora? E 3 fara un sfert.