Curs Flash

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.

1. Creare obiecte

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.

2. Adaugare si accesare proprietati

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"]).


• Indicat este aplicarea unei singure formule (fara combinatie), pentru o mai buna claritate si intelegere a codului. In general, la obiecte se foloseste notatia cu punct (.), parantezele patrate fiind utilizate la elementele Array, astfel se evita confuzia.
In urmatorul exemplu, pentru a arata functionalitatea lor, sunt combinate ambele modalitati, atat la definire cat si la apelare (explicatiile necesare sunt in cod).
// 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".

3. Definire apelare metode

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 };


Iata un exemplu din care se intelege mai bine. Se creaza un obiect cu o proprietate (id) si doua metode. La prima metoda (getSuma ) se asociaza o functie creata inainte, iar pentru a doua metoda (getId) functia e creata direct in codul definirii ei (dupa sintaxa de mai sus).
// 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.
- Observati ca pentru asocierea functiei "f_suma()" la metoda "getSuma" s-a folosit doar numele (fara parantezele rotunde), iar la apelul metodei se tine cont de cei 2 parametri ai functiei (a, b), si metoda se apeleaza cu 2 numere ca parametri.
- Un alt aspect important in acest exemplu este utilizarea sintaxei "this.id". Cuvantul this se foloseste de obicei in interiorul metodelor si mereu face referire la obiectul curent prin care e apelata metoda. "id" este proprietatea obiectului "obj2". Astfel, formula "this.id" returneaza valoarea proprietatii "id" a obiectului curent (obj2).
- Daca adaugati acest script intr-un document Flash nou si apasati "Ctrl+Enter", in prezentarea Flash va apare 2 randuri text, dupa cum se vede mai jos.
Suma este: 15
Id-ul: tutoriale

4. Modificare proprietati si metode

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 };


Iata un exemplu care arata practic acest lucru. Se defineste un obiect cu o proprietate "gen" si o metoda "Rasa". Dupa afisarea acestora in Output valorile lor sunt modificate si re-testate.
// 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.

5. Stergere proprietati si metode, verificare existenta lor

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".


• In ActionScript 3 exista si un operator ( in ) prin care se poate verifica existenta unei proprietati sau metode dintr-un obiect sau in general din orice clasa. Sintaxa este:
                "element" in Clasa
- "element" trebuie adaugat intre ghilimele si poate fi orice proprietate sau metoda din "Clasa" (aceasta poate fi si un obiect creat cu Object).
- Aceasta instructiune returneaza true daca "element" exista in "Clasa", in caz contrar returneaza false.

In urmatorul exemplu se defineste un obiect (obj4) cu o proprietate "gen" si o metoda "Rasa". Se verifica cu "in" existenta lor, se sterg cu delete, apoi se face inca o verificare cu "in" si cu "trace()".
// 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.

Fisierele FLA cu exemplele din aceasta lectie pot fi descarcate de la: Creare Obiecte cu Object

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Ce atribut e folosit in tag-ul <img> pentru adresa imaginii?
href src rel
<img src="http://coursesweb.net/imgs/webcourses.gif" width="191" height="63" alt="Courses-Web" />
Care din aceste coduri CSS ascunde elementul in pagina?
display: none; display: inline; position: relative;
#id {
  display: none;
}
Ce instructiune opreste executia lui while() sau for() ?
continue prompt() break
for(var i = 0; i< 8; i++) {
  if(i > 1) break;
  alert(i);
}
Indicati functia utilizata pentru a crea constante.
define() include() defined()
define("CONSTANT_NAME", "value");
echo CONSTANT_NAME;
Care este forma de plural a substativului "class" (clasa)?
classes clases clasis
This school has three classes.
- Scoala asta are trei clase.
Care este pluralul substativului "voz" (voce)?
vose voze voces
Escuché dos voces.
- Am auzit doua voci.
Clasa Object - Creare Obiecte

Last accessed pages

  1. PHP MySQL - INSERT INTO (1525)
  2. Curs si Tutoriale Ajax (102343)
  3. Conditional IF in Limba Engleza - Fraze Conditionale (99024)
  4. Verbe modale - Modal verbs - CAN, COULD, MAY, MIGHT, MUST (55942)
  5. Poezii pentru copii, in engleza (30857)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (4194)
  2. Curs HTML gratuit Tutoriale HTML5 (3886)
  3. Curs si Tutoriale JavaScript (2529)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (2484)
  5. Blog si Cugetari Personale (2396)