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 tag se foloseste pentru a adauga liste in elemente <ul> si <ol>?
<dt> <dd> <li>
<ul>
 <li>http://coursesweb.net/html/</li>
 <li>http://www.marplo.net/html/</li>
</ul>
Care valoare a proprietatii "display" seteaza elementul ca tip bloc si afiseaza un punct in fata?
block list-item inline-block
.some_class {
  display: list-item;
}
Care instructiune JavaScript transforma un obiect in sir JSON.
JSON.parse() JSON.stringify eval()
var obj = {
 "courses": ["php", "javascript", "ajax"]
};
var jsonstr = JSON.stringify(obj);
alert(jsonstr);    // {"courses":["php","javascript","ajax"]}
Indicati clasa PHP folosita pentru a lucra cu elemente HTML si XML in PHP.
stdClass PDO DOMDocument
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>';
$dochtml = new DOMDocument();
$dochtml->loadHTML($strhtml);
$elm = $dochtml->getElementById("dv1");
echo $elm->nodeValue;    // CoursesWeb.net
Indicati forma de Prezent Continuu a verbului "to live" (a trai /a locui)
lived living liveing
I`m living here.
- Traiesc /Locuiesc aici.
Care este forma de Gerunziu (sau Participiu Prezent) a verbului "vivir" (a trai /a locui)?
viviĆ³ vivido viviendo
Estoy viviendo aquĆ­.
- Traiesc /Locuiesc aici.
Clasa Object - Creare Obiecte

Last accessed pages

  1. Creare si editare pagini HTML (84770)
  2. Gramatica limbii engleze - Prezentare Generala (214825)
  3. Conditional IF in Limba Engleza - Fraze Conditionale (122440)
  4. Scriere cod CSS (5690)
  5. Verbe - Exercitii si teste engleza incepatori (26452)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (961)
  2. Gramatica limbii engleze - Prezentare Generala (626)
  3. Exercitii engleza - English Tests and exercises - Grammar (558)
  4. Prezentul simplu si continuu - Present Tense Simple and Continuous (454)
  5. Coduri pt culori (366)