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
Care tag creaza un text ingrosat?
<q> <strong> <em>
<p>Adresa: <strong>http://CoursesWeb.net/</strong> - Tutoriale.</p>
Care din aceste coduri CSS afiseaza textul ingrosat?
text-size: 18px; font-style: italic; font-weight: 800;
#id {
  font-weight: 800;
}
Ce functie JavaScript apeleaza o alta functie, in mod repetat, la un anumit interval de timp?
setInterval() setTimeout() push()
function someFunction() { alert("CoursesWeb.net"); }
setInterval("someFunction()", 2000);
Clic pe variabila definita corect in PHP.
var vname = 8; $vname = 8; $vname == 8;
$vname = 8;
echo $vname;
Care din urmatoarele forme ale verbului "travel" (a calatori) e la timpul Prezent Perfect?
have traveled shall travel had traveled
We have traveled in space.
- Noi am calatorit (deja) in spatiu.
Care din urmatoarele forme ale verbului "pintar" (a picta) se foloseste la Trecutul Imperfect?
ir a pintar pintaba pintó
La niña pintaba un arco iris.
- Fetita picta un curcubeu.
Clasa Object - Creare Obiecte

Last accessed pages

  1. Natura ma poate invata despre Spiritualitate (115)
  2. Gramatica limbii spaniole. Indrumator si prezentare generala (64341)
  3. Stilizare tabele HTML cu CSS (7700)
  4. Curs HTML gratuit Tutoriale HTML5 (188479)
  5. Limba spaniola curs online incepatori si avansati (26759)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1214)
  2. Curs HTML gratuit Tutoriale HTML5 (948)
  3. Coduri pt culori (692)
  4. Creare si editare pagini HTML (554)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (510)