Ierarhic, Clasa Object este radacina (root) tuturor claselor din ActionScript, toate sunt o extindere a clasei Object.
Object este o clasa dinamica, adica permite adaugarea de noi proprietati si metode. Prin aceasta se pot crea obiecte cu proprietati si metode proprii.
Exista mai multe modalitati de a crea obiecte in ActionScript 3. Forma cea mai comuna este prin intermediul sintaxei:
var numeObiect:Object = new Object();
- "numeObiect" devine un obiect la care se pot adauga proprietati si metode proprii, definite de programator.
Un alt mod de a crea un obiect este cu urmatoarea formula:
var numeObiect:Object = {prop1:val1, prop2:val2, ...}
- "prop1", "prop2" reprezinta proprietatile obiectului "numeObiect", iar "val1", "val2" sunt valorile lor. Pot fi adaugate oricate astfel de perechi "proprietate:valoare", intre cele doua acolade si separate prin virgula. Daca valorile sunt de tip sir trebuie scrise intre ghilimele, dar numerele nu.
- Aceasta forma este utilizata de obicei cand obiectul respectiv contine o lista simpla de date, care pot fi accesate dupa cum este prezentat mai jos.
Proprietatile se adauga dupa ce a fost creat obiectul, cu "new Object()".
Forma cea mai directa de a defini proprietati cu anumite valori unui obiect este cu notatia punct (.), dupa urmatoarea formula:
numeObiect.nume_proprietate = valoare;
Sau cu paranteze patrate [] (precum la Array asociativ), cu sintaxa:
numeObiect['nume_proprietate'] = valoare;
- La varianta cu paranteze patrate, numele proprietatii trebuie scris intre ghilimele (simple sau duble).
- "valoare" poate fi un numar, un sir (intre ghilimele), o variabila definita inainte, proprietatea vreunei instante de obiect, apelarea unei functii.
• Apelarea proprietatilor se face cu oricare din modalitati: folosind caracterul punct (.) intre numele obiectului si proprietate (Obiect.proprietate), sau cu proprietatea intre paranteze patrate [] dupa numele obiectului (Obiect["proprietate"]).
// Se creaza un obiect "obj" var obj:Object = new Object(); // Se definesc 2 proprietati // prima cu notatia punct, a doua cu [] obj.site = 'marplo.net'; obj['cursuri'] = 8; /* Se poate crea acest obiect si prin formula cu acolade var obj:Object = {site:"marplo.net", cursuri:8}; In acest caz reprezinta acelasi obiect */ // Initializeaza o instanta "TextField" intr-o variabila "txt" var txt:TextField = new TextField(); // Adauga ca text in "txt" valorile proprietatilor "site" si "cursuri" // Pt. "site" se foloseste [] iar pt. "cursuri" notatia cu (.) txt.text = obj["site"]+ ' - '+ obj.cursuri; // cu "addChild()" adauga /afiseaza textul in prezentarea Flash addChild(txt); // marplo.net - 8- Daca adaugati acest script intr-un document Flash nou si apasati "Ctrl+Enter", in prezentarea Flash va apare textul "marplo.net - 8".
In principiu, metodele sunt functii. Diferenta dintre functii si metode este aceea ca functia poate fi apelata direct (in zona unde e creata), dar metoda se apeleaza prin intermediul obiectului in care e definita.
Valoarea obtinuta prin apelarea unei metode este rezultatul returnat de functia asociata metodei respective.
Metodele se definesc prin notatia cu punct (.), dupa crearea obiectului. Iar ca valoare se asociaza o functie. Sintaxa generala este urmatoarea:
numeObiect.numeMetoda = numeFunctie;
- Functia poate fi creata inainte si asociata prin numele ei, sau poate fi creata direct in momentul definirii metodei, cu formula:
numeObiect.numeMetoda = function():Tip { ... codul functiei };
// Se creaza functia ce va fi asociata unei metode function f_suma(a:Number, b:Number):String { var suma:Number = a+b; return 'Suma este: '+ suma; } // Se defineste obiectul "obj2" cu proprietatea "id" si metodele "getSuma" si "getId" var obj2:Object = new Object(); obj2.id = 'tutoriale'; obj2.getSuma = f_suma; obj2.getId = function():String { var idul = 'Id-ul: '+ this.id; return idul; }; // Initializeaza o instanta "TextField" intr-o variabila "txt2" var txt2:TextField = new TextField(); // Adauga ca text in "txt2" valorile returnate de apelarea metodelor "getSuma()" si "getId" // Cu "\n" se adauga rand nou txt2.text = obj2.getSuma(7, 8)+ "\n"+ obj2.getId(); // cu "addChild()" adauga /afiseaza textul in prezentarea Flash addChild(txt2);- Prin apelarea celor doua metode: "getSuma" si "getId", vor fi executate functiile asociate lor, acestea returnand fiecare cate un sir.
Valoarea proprietatilor si metodelor dintr-un obiect creat cu "Object" pot fi oricand modificate, folosindu-se aceeasi formula ca pentru crearea lor:
- Pentru proprietati
numeObiect.nume_proprietate = alta-valoare; sau numeObiect["nume_proprietate"] = alta-valoare;
- Pentru metode
numeObiect.numeMetoda = alta_functie; sau numeObiect.numeMetoda = function():Tip { ... Alt cod };
// Se defineste obiectul "obj3" cu proprietatea "gen" si metoda "Rasa" var obj3:Object = new Object(); obj3.gen = 'Animale'; obj3.Rasa = function():String { return "Magari" }; // Verifica cu trace() valoarea lor trace(obj3.gen+ ' - '+ obj3.Rasa()); // Animale - Magari // Redefineste valoarea lui "gen" si metodei "Rasa" obj3.gen = 'Pasari'; obj3.Rasa = function():String { return "Porumbei" }; // Verifica inca o data valoarea lor trace(obj3.gen+ ' - '+ obj3.Rasa()); // Pasari - Porumbei- Se observa ca la a doua verificare a dat alt rezultat, conform modificarilor.
Stergere unei proprietati sau metode dintr-un obiect creat cu "Object" se face cu instructiunea delete urmata de apelul la acea proprietate sau metoda. Sintaxa fiind:
delete numeObiect.element;
- "element" poate fi orice proprietate sau metoda din "numeObiect".
// Se defineste obiectul "obj4" cu proprietatea "gen" si metoda "Rasa" var obj4:Object = new Object(); obj4.gen = 'Animale'; obj4.Rasa = function():String { return "Magari" }; // Verifica cu "in" existenta lor trace("gen" in obj4); // true trace("Rasa" in obj4); // true // Sterge "gen" si metoda "Rasa" delete obj4.gen; delete obj4.Rasa; // Verifica iar cu "in" existenta lor trace("gen" in obj4); // false trace("Rasa" in obj4); // false // Se incearca si apelarea lor trace(obj4.gen+ ' - '+ obj4.Rasa()); // TypeError: Error #1006: Rasa is not a function ...- Se observa efectul lui "in" si "delete" din rezultatele returnate.
<input type="number" name="points" min="5" max="80" />
#id { filter:alpha(opacity=40); /* for IE */ opacity:0.4; }
var num = 12.84567; alert( num.toPrecision(3) ); // 12.8
$lang =[10=>"PHP", 20=>"JavaScript", "site"=>"coursesweb.net"); shuffle($lang); var_export($lang); // array (0=>"coursesweb.net", 1=>"PHP", 2=>"JavaScript")
She is the best in our class. - Ea este cea mai buna din clasa noastra.
Él es el mejor en nuestra clase. - El este cel mai bun din clasa noastra.