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 atribut face ca optiunea din <select> sa fie selectata?
checked="checked" selected="selected" disabled="disabled"
<select name="a_name">
 <option value="val1">Optiune 1</option>
 <option value="val2" selected="selected">Optiune 2</option>
</select>
Care din aceste valori CSS creaza culoare gradient pentru fundal?
contain repeat-x linear-gradient
#id {
  background: linear-gradient(top left, #1f1, #fff, #11f);
}
Care cod creaza un array in JavaScript?
[] {} new Object()
var arr = [1, "CoursesWeb.net", "MarPlo.net"];
alert(arr[2]);
Indicati functia PHP folosita pentru redirect la alta pagina.
function() header() switch()
header("Location: http://coursesweb.net/");
exit;
Indicati articolul corect la cuvantul "garden" in propozitia: "... garden is a place with flowers".
An The A
The garden is a place with flowers.
- Gradina este un loc cu flori.
Indicati articolul corect pentru cuvantul: "jardín" (gradina)
la los el
El jardín es un lugar de flores.
- Gradina e un loc cu flori.
Clasa Object - Creare Obiecte

Last accessed pages

  1. Invat legea iubirii. Ce dau fratelui meu imi dau mie (117)
  2. Boala, nume pt. pacat. Vindecarea: nume pt. Dumnezeu (191)
  3. Fiul lui Dumnezeu e Identitatea mea (47)
  4. Ora curenta JavaScript (2174)
  5. Cursuri Limba Franceza (9443)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (36)
  2. Cursuri limba engleza gratuite si lectii online (14)
  3. Gramatica limbii spaniole. Indrumator si prezentare generala (12)
  4. Expresii uzuale din Limba Spaniola (A-D) (9)
  5. Teste spaniola - Tests y ejercicios de Español - Gramática (9)