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 este element de tip bloc?
<div> <img> <span>
<div>Web Programming and Development</div>
Care cod CSS afiseaza textul subliniat?
font-style: italic; text-decoration: underline; font-weight: 500;
h2 {
  text-decoration: underline;
}
Clic pe functia JavaScript care apeleaza o alta functie dupa un anumit timp.
insertBefore() setTimeout() querySelector()
function someFunction() { alert("CoursesWeb.net"); }
setTimeout("someFunction()", 2000);
Clic pe instructiunea care returneaza numarul total de elemente dintr-un array asociativ.
count($array) count($array, 1) strlen()
$food =["fruits" =>["banana", "mar"), "veggie" =>["ceapa", "rosie"));
$nr_food = count($food, 1);
echo $nr_food;       // 6
Indicati Viitorul Perfect la negativ al verbului din paranteze, in propozitia: "The child (to not play) by Sunday".
has't played haven't been playing will haven't played
The child will haven't played by Sunday.
- Copilul nu s-ar fi jucat pana duminica.
Indicati Viitorul Perfect pentru verbul "contar" (a povesti) la forma "Él".
habrá contado va a contar contaba
Él no habrá contado el cuento.
- El nu ar fi spus povestea.
Clasa Object - Creare Obiecte

Last accessed pages

  1. Verbe regulate (8160)
  2. Subjunctiv vs indicativ-pluscuamperfect (231)
  3. Subjunctiv vs indicativ-prezent si trecut (308)
  4. Instructiuni repetitive for si while (5576)
  5. Accentul si Pronuntia (26519)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (1274)
  2. Curs HTML gratuit Tutoriale HTML5 (968)
  3. Coduri pt culori (727)
  4. Creare si editare pagini HTML (567)
  5. Conditional IF in Limba Engleza - Fraze Conditionale (526)
Chat
Discuta sau lasa un mesaj pt. ceilalti utilizatori
Full screenInchide