Sunteți pe pagina 1din 80

Introducere ActionScript 3.

0
Limbajul de programare pentru Flash este ActionScript. Cu ActionScript se scriu instructiuni prin care pot fi controlate elementele din prezentarea Flash. De exemplu, se pot adauga insttructiuni la butoane prin care sa fie pornita si oprita o animatie, sa se schimbe culoarea si dimensiunile unui oibiect; sau se pot crea obiecte, text si animatii in prezentarea Flash, folosind cod ActionScript. Cu ActionScript se pot crea programe care ruleaza pe internet si in pagini web (de ex. ocuri!, sau pentru i"hone, telefoane mobile ori Des#top. $ste un limba de scripting asemanator cu %a&aScript; de exemplu, in ambele limba e &ariabilele se declara utilizand comanda '&ar', sirurile se unesc folosind caracterul '('. Daca stiti sa lucrati cu %a&aScript, &eti intelege si in&ata mai usor ActionScript. ActionScript 3 a fost introdus de Adobe in )**+ cu 'Adobe Flex ).*'. , $ste un limba de programare orientat pe obiecte (OOP - Object Oriented Programming! destul de a&ansat si puternic, incluzand unele din cele mai noi concepte de programare, utilizand Clase, obiecte, metode si e&enimente. "entru a crea o prezentare Flash cu ActionScript -, se deschide un document nou alegand 'ActionScript -.*' de la Create New din fereastra de inceput a programului Adobe Flash. Codul ActionScript se adauga la cadrele din .imeline sau intr,un fisier extern (cu extensia '.as'!. , Spre deosebire de ActionScript 2.0, in aceasta versiune mai noua, codul nu se adauga direct in Movie Clips sau alte obiecte. "entru inceput &a fi aratata medoda de adaugare a lui direct in document, la cadre din .imeline. Dupa ce se deschide un document Flash nou, este indicat sa fie mai intai creat un Strat (/a0er! special pentru coduri ActionScript (din meniul Insert -> Timeline -> La er!. Se poate folosi in orice Cadru din .imeline, dar fiind pe un /a0er separat e mai usor de structurat; iar pentru un control mai bun, sa i,se dea un nume special acelui Strat, intuiti& (prin dublu,clic# pe numele lui!, de ex. 'Actions' (mai ales pt. cazuri cand se &a lucra cu mai multe Straturi!. Codul ActionScript se scrie intr,un panou special, ca cel din imaginea urmatoare, care are un set complet de optiuni, descrise mai os. Acest panou se poate deschide din meniul !indow -> Acions (dupa ce a fost selectat un Frame din Stratul 'Actions'!, sau prin clic#,dreapta pe cadrul din acel Strat, la care &a fi apicat codul, si se alege optiunea Actions. - "anou pt. ActionScript # Strat Actions in Timeline

, 1n partea de os a imaginii este panoul .imeline, cu stratul 'Actions' creat pt. adaugare ordonata a codului ActionScript la cadrele din el. Aici, cadrul selectat este primul din acest /a0er. , 1ata ce fac optiunile din panoul 'AC.123S , F4A5$'6

Categorie Script , Se alege tipul de script 7&ersiune folosit la cod. Toolbo$ , 2fera o lista cu toate actiunile instalate in program, la &ersiunea de script aleasa, organizate pe categorii. %ona de na&igare , Aici sunt organizate toate scripturile din document, si pot fi gasite dupa 'Strat ' Numar cadru'. Script Tag , 1ndica ce script (din ce 'Cadru 6 Frame'! este editat. "in Script , Adauga in acea linie un '.ab' la scriptul curent, pt. a na&iga mai usor din unu in altu cand se lucreaza cu scripturi in mai multe cadre. %ona scriere cod , $ste locul unde se scrie codul ActionScript. (elp , Deschide pagina online de A utor de la Adobe, pentru elementul din cod selectat. )eniu *ptiuni , 5eniul cu optiuni ale panoului, pentru control, format, si altele.

Script Assist , Cand aceasta optiune este acti&ata, codul in script se adauga controlat, din zona '.oolbox'. Script Assist 'supra&egheaza' sa se scrie cod fara erori. Code Snippets , Deschide un panou care ofera segmente de cod gata facute pentru cele mai utilizate actiuni, organizate pe categorii. Toolbar Actions , 8ara de instrumente a panoului, cu optiunile prezentate mai os6

o o o o o o o o

S+ow#(ide Toolbo$ , Ascunde si afiseaza .ollbox. ,emo&e Comment , Sterge caracterele specifice pt. comentarii; de la cel selectat. Appl Line Comment , Adauga caracterele '77' (pentru creare linie comentariu! la inceputul randurilor selectate. Appl -loc. Comment , .ransforma liniile selectate intr,un 'bloc de comentariu'. /$pand All , "ermite extinderea tuturor codurilor care au fost restranse. Collapse Selection , 4estrange randurile de cod selectate. Collapse between braces , 4estrange codul dintre acolade. 0ebug *ptions , Adauga 7sterge '8rea#points' (puncte de pauza!, unde intentionat se face o pauza a executiei scriptului la o anumita linie din cod , pentru examinarea lui. S+ow code +int , Afiseaza indicii pentru auto,completare cod.

o o o o

Auto 1ormat , Aran eaza scriptul pentru o mai usoara citire a lui, aplicand spatii si culori. 2ptiunile pt. format pot fi setate din meniul /dit -> "re2erences -> ActionScript. C+ec. s nta$ , 9erifica scriptul, cautand erori de sintaxa, si afiseaza detalii intr, un panou 'Compiler $rrors'. Insert target pat+ , A uta la alegerea obiectelor la care face referire o anumita functie din cod. 1ind , 2fera posibilitatea de cautare si inlocuire cu&inte din codul scriptului. Add script items , 2fera acces la elemente din limba ul ActionScript, precum cele din .oolbox.

, Acest panou, cu toate optiunile lui, este folosit pentru adaugarea de scripturi in documentul Flash, dupa cum se poate in&ata din lectiile urmatoare. $sential la oricare limba de programare este scrierea corecta a codului, respectand s0ntaxa limba ului. Flash ofera indicii destul de bune in cazul unor erori, pentru depistarea cat mai exacta a lor. , 1mportant de a&ut in &edere este faptul ca ActionScript este un limba cu sintaxa case, sensiti&e (face diferenta intre ma uscule si litere mici!, astfel, '8uton' e diferit de 'buton'. , /ectiile de ActionScript din acest curs sunt indicate mai mult celor care cunosc cel putin la ni&el de incepatori bazele unui limbaj de programare (C((, C:, ";" sau %a&aScript!, deoarece elementele de baza ale oricarui limba de programare6 &ariabile, operatori, instructiuni conditionale si ciclice sunt prezentate mai pe scurt, cu putine explicatii.

"rimul script ActionScript 3


1nainte de a trece la prezentarea elementelor limba ului ActionScript 3, iata un script simplu ca sa &edeti inca de la inceput cat de usor se pot crea diferite obiecte (text, figuri geometrice! intr,o prezentare Flash, scriind direct cod ActionScript in document. $fectuati urmatorii pasi6 <. Deschideti un document Flash nou, ActionScript -.* ). Clic#,dreapta pe primul cadru din .imeline si alegeti Actions -. 1n fereastra care se deschide pentru scriere ActionScript, adaugati urmatorul cod6
var site:TextField = new TextField(); // Initializeaza variabila "site", avand tipul "TextField" (camp pt text) site text = "www marplo net"; // !dau"a un text in variabila "site" add#$ild(site); // !dau"a variabila (valoarea ei) in prezentarea Flas$

=. Apasati 'Ctrl($nter' pentru a &edea rezultatul, prezentarea Flash obtinuta. , Acest script ActionScript afiseaza in pla0er,ul Flash textul 'www.marplo.net'. Destul de simplu 6!. Se pot crea multe alte elemente in prezentarea Flash, folosind cod ActionScript6 figuri geometrice, miscari de animatie, si altele.

1ata, de exemplu, sa adaugam un patrat la prezentarea de mai sus, sub text. !plicatiile necesare, privind rolul "iecarei linii de cod sunt scrise in script. >. Se continua de la exemplul de sus. 1n acelasi panou pt. scriere scripturi ActionScript adaugati codul de mai os, sub cel de a existent (dupa cum &edeti in imaginea urmatoare!.

, #aca ati inc$is deja panoul, dati iar clic%-dreapta pe primul Cadru in timeline si apoi Actions.
var patrat:%$ape = new %$ape; // Initializeaza variabila "patrat", avand tipul "%$ape" (Forma) patrat "rap$ics be"inFill(&x&'(e&'); // !dau"a si o culoare la "patrat", cu proprietatea ""rap$ics" si metoda "be"inFill(&x))**++) // %e (ormeaza patratul (pozitia si dimensiuni, in pixeli) in variabila "patrat"

// , cu proprietatea ""rap$ics" la care se aplica metoda "draw)ect(spatiu x, spatiu -, lun"ime, inaltime)" patrat "rap$ics draw)ect(&, .&, /&&,/&&); // .& reprezinta distanta in pixeli (ata de mar"inea de sus add#$ild(patrat); // !dau"a patratul in prezentarea Flas$

+. Apasati iar 'Ctrl($nter', prezentarea Flash creata &a fi ca cea din imaginea urmatoare.

, Fisierul F/A cu acest exemplu poate fi descarcat de la6 "rim script AS-. Asfel, treptat, folosind cod AS- (ActionScript -!, se pot crea Flash,uri complexe; elementele adaugate si proprietatile lor pot fi controlate prin functii si &alori adaugate in cod. De exemplu, pentru a adauga transparenta la patrat, se foloseste metoda 'beginFill(culoare, nr?alpha!' cu doi parametri, unde, 'nr?alpha' este un numar intre * si < pt. transparenta ( ex.6 begin1ill30$042e045 0.67 !. 5ai multe despre acest limba de programare puteti in&ata din lectiile urmatoare, treptat, incepand cu elementele si actiunile simple.

Intelegere **" - *bject *riented "rogramming


Conceptul **" 3*bject *riented "rogramming7 @Programare orientata pe obiecteA are la baza impartirea codului programului in obiecte separate, care pot fi si grupate, formand astfel un alt obiect. De exemplu, rotile, cadrul, ghidonul unei biciclete sunt obiecte separate, dar unite formeaza o bicicleta, care si ea poate fi considerata un obiect. /a fel si in programarea ActionScript in Flash, textul, figura geometrica, s0mbolul mo&ie clip, etc., sunt considerate obiecte. B *biectele sunt definite folosind doi identificatori primari6 proprietati si metode

B "roprietatile unui obiect ii definesc caracteristicile acestuia, iar metodele sunt functii (actiuni! aplicate obiectului printr,o anumita proprietate. De exemplu, obiectul poate fi o 'casa', iar 'culoare', 'ferestre', 'usi' pot fi considerate proprietati, si 'deschidere', 'inchidere' sunt metode. Aplicarea unei metode la un obiect printr,o proprietate s,ar putea traduce prin 'desc$idere "ereastra la casa'. B 1n programare, 'metoda(!' este o functie care face parte din definitia unei clase, de aceea se foloseste cu paranteze rotunde. B /egatura intre obiecte, proprietati si metode se face prin caracterul punct (.!. B /iniile de cod trebuie sa se termine cu un caracter punct,si,&irgula (;!. Astfel, exemplul dat anterior (desc$idere "ereastra la casa! s,ar scrie 'casa."ereastra.desc$idere&'('. Caeracteristicile unui obiect se schimba prin proprietatile si metodele pe care le poate a&ea. Atribuirea (setarea! unei &alori la proprietatea unui obiect se face comform sintaxei6 obiect.proprietate 8 &aloare9 Aplicarea unei metode se face dupa sintaxa6 obiect.proprietate.metoda379 De exemplu6 patrat.width = 100; , 2biectul este 'patrat', proprietatea lui e 'width' iar '<**' este &aloarea care i,se da. patrat.graphics.beginFill(0x08fe08); , 5etoda 'beginFill(!' este aplicata obiectului 'patrat' prin proprietatea acestuia 'graphics', acestea fiind unite prin caracter punct (.!. , 'metoda(!' fiind o functie, poate a&ea unul sau mai multi parametri, care se adauga intre parantezele rotunde. Cnele metode pot fi aplicate direct unui obiect, fara intermediul &reunei proprietati De ex.6 m Clip.gotoAndStop3:79 , 'gotoAndStop(D!' muta cadru curent din animatia 'm0Clip' la cadrul D si opreste. B "e langa obiecte, proprietati si metode; in 22" sunt si elemente cunoscute ca 'e&ents' (e&enimente!. Acestea sunt actiuni care declan eaza executia unei functii. De exemplu, apasarea unui buton, sau trecerea cu mouse,ul deasupra unui obiect, sunt e&enimente prin care se poate porni executia unei functii. "e scurt, in 22" ("rogramarea 2rientata pe 2biecte! se folosesc urmmatoarele elemente6

Classes 3clase7 , $ste reprezentarea unui obiect, unde sunt definuite proprietatile si metodele lui. Instances 3instante7 , 1nstanta unui obiect, denumirea lui, la care se pot aplica proprietati si metode. "roperties 3proprietati7 , Caracteristici care definesc un obiect. )et+ods 3metode7 , Functii (actiuni! care se aplica obiectelor.

/&ents 3evenimente7 , Actiuni ce declan eaza executia unei functii, efectuarea unei comenzi. $&enimentele pot fi cele ale mouse,ului (clic#,ul sau miscarea cursorului!, ale tastaturii (apasarea unui buton!, ale Cadrelor (cand "la0head a unge la un anumit cadru! sau 'e&ent loads' ('e&enimente de incarcare', care se raporteaza la progresul de incarcare a fisierelor externe!.

1ata un exemplu practic, in care &or fi folosite elementele prezentate in acest tutorial. "rin apasarea unui buton se &a schimba lungimea si pozitia unui patrat. , Observati cum sunt "olosite elementele OOP) obiect, proprietate, eveniment( si cum se "ace legatura intre obiecte din Scena si script. <. Deschideti un document Flash nou (ActionScript -.*! si desenati in scena un patrat. ) .ransformati patratul in S0mbol 5o&ie Clip (din meniul 5odif0 ,E Con&ert to S0mbol, la .0pe puneti 5o&ie Clip!, apoi dati instantei acestui 5o&ie Clip (patratul din Scena! numele patrat. , 3umele unei instante se da (se scrie! in panoul "roperties, in casuta din partea de sus, unde este 'F1nstance 3ameE'. 3umele dat astfel unui obiect din Scena este unealta prin care se poate face legatura dintre el si codul ActionScript. Acel nume &a reprezenta in script obiectul respecti&. - /anga patrat desenati si un cerc (dupa cum se &ede in imaginea de mai os! pe care,l transformati in 8uton (din meniul 5odif0 ,E Con&ert to S0mbol, la .0pe alegeti 8utton!, apoi dati,i ca nume de instanta buton (ca la patrat, in casuta din Properties apartinand instantei cerc!.

=. Dati clic#,dreapta pe primul Cadru din .imeline (la care sunt de fapt create cele ) obiecte din

Scena! si alegeti Actions. >. 1n fereastra care se deschide (pt. scriere cod ActionScript! adaugati urmatorul cod AS-6
// #omanda pt apelarea (unctiei "set0idt$()" cand e apasat (#1I#2) obiectul "buton" buton add3vent1istener(4ouse3vent #1I#2, set0idt$); // %e de(ineste (unctia "set0idt$()" (unction set0idt$(evt) 5 patrat widt$ = //6; // 7a o valoare proprietatii "widt$" (lun"ime) a obiectului "patrat" patrat - = /&&; // 7a o valoare proprietatii "-" (distanta 8, (ata de mar"inea de sus) a obiectului "patrat" 9

+. Apasati 'Ctrl($nter' pentru a &edea rezultatul, prezentarea Flash obtinuta. 9a apare ce&a asemanator cu prezentarea urmatoare (apasati clic# pe buton, cercul galben!6 Fisierul F/A cu acest exemplu poate fi descarcat de la6 $xemplu intelegere 22". , Comanda 'add$&ent/istener(!' este o functie din ActionScript - pentru lucru cu e&enimente. Aceasta primeste ca parametrii e&enimentul (aici '5ouse$&ent.C/1CG'! si functia care &a fi apelata cand este produs acel e&eniment (aici functia 'setHidth(!'!. Conecteaza e&enimentul cu functia , si este adaugata la obiectul 'buton' (prin caracterul punct '.'!, care reprezinta cercul din scena (instanta la care s,a dat numele 'buton'!. , '5ouse$&ent.C/1CG' este o constanta ce precizeaza exact e&enimentul la care se apeleaza functia. , Functia 'setHidth(!' executa codul scris intre acoladele ei ( ;< ! cand este apelata. Aici sunt doua linii de cod. , 'patrat.width' , defineste (schimba! &aloarea proprietatii 'width' (lungime! a obiectului 'patrat' (acesta fiind instanta din scena la care s,a dat numele 'patrat'!. , 'patrat.0' , defineste (schimba! &aloarea proprietatii '0' (distanta I, fata de marginea de sus! a obiectului 'patrat'. Despre functii &eti putea in&ata mai multe in lectiile urmatoare; aici e folosita doar pentru intelegerea utilizarii e&enimentelor.

=ariabile5 Comentarii si trace


>. =ariabile
=ariabilele sunt elemente din limba in care sunt stocate date. Ca analogie, &ariabila este precum o cutie in care poate fi adaugata o piesa pentru a fi transportata dintr,un loc in altul; importanta este piesa adaugata, nu cutia in sine, singura. Asa si la &ariabile, importante sunt datele stocate in ele, care, prin numele &ariabilei pot fi folosite in diferite locatii din script. "recum o cutie poate fi de mai multe feluri, in functie de lucrul pe care,l transporta, asa si &ariabilele sunt de mai multe tipuri, in functie de datele pe care le contin. Astfel, sunt &ariabile de tip 'String' (contin date de tip sir, text!, de tip '3umber' (contin doar numere!, &ariabile de tip 'Arra0' (stocheaza mai multe &alori intr,o singura &ariabila!, si altele.

B Sintaxa generala pentru a crea (defini! o &ariabila in ActionScript - este urmatoarea6 &ar nume'Tip 8 &aloare9 sau &ar nume'Tip9 nume 8 &aloare9 , '&ar' este cu&antul special rezer&at din limba pentru a declarara &ariabile. , 'nume' este numele dat &ariabilei. "oate fi orice cu&ant, care sa nu inceapa cu un numar sau alt caracter special, sa nu contina spatii si sa fie diferit de cu&intele rezer&ate ale limba ului (precum '&ar', 'function', si altele, ce pot fi identificate prin faptul ca se coloreaza in albastru!. , '&aloare' reprezinta &aloarea (data! stocata in &ariabila. , /a '.ip' se specifica tipul de date ce,l &a contine &ariabila. Specificarea tpiului poate fi omisa, nu e obligatoriu sa fie adaugat '.ip' (se poate scrie si &ar nume 8 &aloare9!, dar este indicat deoarece &a reduce cantitatea de memorie pe care Flash &a trebui sa o foloseasca pt. a recunoaste tipul datelor din &ariabila. Acesta poate fi de mai multe feluri, dar principalele tipuri generice sunt6

String , folosit pt. date ce contin orice text sau sir de caractere. Acestea sunt scrise intre ghilimele (simple sau duble!. Number , pentru numere, orice tip de numere, intregi sau cu zecimale (numerele se adauga libere, fara ghilimele!. int , doar pt. numere intregi. uint , pt. numere intregi poziti&e. -oolean , pt. declaratiile logice true sau 2alse. Arra , folosit pt. a stoca mai multe &alori, adaugate intre o pereche de paranteze patrate. 0ate , pt. &alori care indica o data in timp. ,eg/$p , folosit pt. &alori cu expresii regulate null , pt. &ariabile care nu au &reo &aloare atribuita, nule. &oid , acest tip e folosit daca o functie nu returneaza nici o &aloare. ? , folosit daca &ariabila nu are un tip specific. unde2ined , indica &ariabile fara un tip specific si care nu au fost initializate.

B 1mportant , ActionScript fiind un limba case,sensiti&e (cu diferenta intre ma uscule si litere mici!, trebuie sa se respecte exact sintaxa, deoarece, de ex. 'String' e diferit de 'string'. De exemplu, pentru a declara o &ariabila ce contine un text (un sir!, se defineste astfel6 &ar un@sir'String 8 ACursuri programare web www.marplo.netA9 sau pentru numere intregi6 &ar nr'int 8 B49 iar un Arra0, pentru mai multe &alori in acelasi nume de &ariabila6 &ar un@arr'Arra 8 CDcursuri web www.marplo.netD5 DtutorialeD5 B4E9

F. Comentarii
Comentariile, desi nu sunt importante la script, fiind ignorate la executia scriptului, sunt importante pentru subiectul uman. "rogramatorul poate adauga comentarii, explicatii in script, la diferite linii de cod, ca sa includa anumite indicii si explicatii in legatura cu scriptul respecti&, despre functiile si codul din el;

usurand astfel intelegerea acestuia de catre alte persoane. B Comentariile se adauga6 , folosind doua slash,uri (77! la inceputul lor, cand sunt scrise pe o singura linie. // omentari! pe o linie , intre #? si ?# cand sunt scrise pe mai multe randuri. /" omentari! pe mai m!lte linii# do!a# trei# sa! oricate s!nt nevoie "/

3. trace37
trace37 este un tip special de functie a limba ului ActionScript. $ folosita in genral pentru 'debug' (depanare 7&erificare si e&aluare cod!. trace37 nu are nici un rol in prezentarea Flash creata, dar cand se testeaza lucrarea facuta (cu 'Ctrl($nter'! afiseaza in panoul '*utput' informatii despre argumentul (&ariabila, expresie de cod! adaugata intre paranteze. "entru cine cunoaste ";", este oarecum asemanatoare cu '&ar?dump(!'. Sintaxa ei este urmatoarea6 trace3param79 , 'param' poate fi o &ariabila sau o expresie mai complexa. , 1ata un exemplu in care sunt folosite cele explicate in aceasta lectie (variabile, comentarii, trace!. <. Deschideti un document Flash nou, ActionScript -.* ). Clic#,dreapta pe primul cadru din .imeline si alegeti Actions -. 1n fereastra care se deschide pentru scriere ActionScript, adaugati urmatorul cod6
/: #omentariu pe mai multe linii , 3xemplu !ction%cript cu variabile, comentarii si trace() , %ite: $ttp://www marplo net/ :/ // %e declara . variabile (%trin" si ;umber) var sir:%trin" = <1ectie !%=<; var nr:;umber = >; // ?tilizare trace(); trace(sir); trace(<#adru curent <@ t$is currentFrame);

// Aeri(icare cadru curent

, 2bser&ati ca se poate adauga comentariu si intr,un rand cu cod, dar dupa el (dupa caracterul (;!!. , A doua apelare 'trace(!' contine ca parametru o expresie mai compleza. 2peratorul '(' (de unire! uneste la sirul 'Cadru curent' &aloarea data de formula 't$is.current*rame' (returneaza cadrul curent din .imeline la care e adaugat scriptul!. =. Apasati 'Ctrl($nter'. "la0erul Flash &a apare gol, il puteti inchide; important la acest exemplu e panoul 2C."C. in care este afisat rezultatul dat de functia 'trace(!', dupa cum se &ede in

imaginea urmatoare.

, "rimul 'trace(!' returneaza &aloarea &ariabilei 'sir', iar al doilea, &aloarea expresiei din parantezele lui. , Fisierul F/A cu acest exemplu poate fi descarcat de la6 9ariabile, Comentarii, trace.

Constante si *peratori
>. Constante
Constantele sunt ca o &ariabila cu &aloare fixa. 2 constanta dupa ce a fost definita, pastreaza aceeasi &aloare pe tot parcursul programului. Sintaxa generala pentru a crea o constanta este urmatoarea6 const NG)/'Tip 8 &aloare9 , 'const' este cu&antul special rezer&at din limba pentru a declarara constante.

, '3C5$' este numele constantei. "oate fi orice cu&ant, care sa nu inceapa cu un numar sau alt caracter special, sa nu contina spatii si sa fie diferit de cu&intele rezer&ate ale limba ului (precum '&ar', 'const', 'function', si altele, ce pot fi identificate prin faptul ca se coloreaza in albastru!. 3umele poate fi scris si cu litere mici, dar pentru a face diferenta intre &ariabile obisnuite si constante, programatorii cu experienta le scriu cu ma uscule. , /a '.ip' se specifica tipul de data atribuita (o parte din ele, cele generale, sunt pre+entate in lectia anterioara!. Specificarea tpiului poate fi omisa, nu e obligatoriu sa fie adaugat '.ip' (se poate scrie si const NG)/ 8 &aloare9!, dar este indicat deoarece &a reduce cantitatea de memorie pe care Flash &a trebui sa o foloseasca pt. a recunoaste tipul datelor din constanta. , '&aloare' reprezinta &aloarea atribuita constantei, si care ramane fixa. De exemplu, pentru a declara o constanta cu numele unui frate si alta cu &arsta lui, se poate scrie un cod astfel6
const F)!T3:%trin" = <Aictor<; const F)!T3B!;I:uint = ==; // Centru "debu"" (veri(icare in Dutput) se poate (olosi "trace()" trace(F)!T3@ < , <@ F)!T3B!;I); // Aa a(isa in panoul Dutput: Victor - 33

F. *peratori
*peratorii sunt simboluri (sau cu&inte,cheie! prin care se manipuleaza, combina si modifica datele din script. De exemplu, cei mai cunoscuti operatori sunt6 ( (adunare!, , (scadere! si J (atribuire &aloare!. 2peratorii pot fi folositi pentru a efectua operatii cu mai multe tipuri de date (numere, siruri, &ariabile, constante!. 2peratorii pot fi impartiti in mai multe grupe6 - *peratori aritmetici

H , adunare o ) ( - , &ar< ( &ar) - , scadere o ) , - , &ar< , &ar) ? , inmultire o ) K - , &ar< K &ar) I , modulo (returneaza restul impartirii! o L M - (returneaza )! , &ar< M &ar)

, Daca sunt mai multi operatori aritmetici in aceeasi expresie, se respecta regulile de executie din aritmetica (intai inmultire ,impartire sau modulo, apoi adunare sau scadere. #aca sunt si parante+e, inainte de toate se e!ecuta codul din ele!. , Caracterul '(' e folosit si ca operator de concatenare (unire! pentru siruri. De ex.6 var curs)String - ./utoriale *las$ . 0 .- www.marplo.net.( ,, /utoriale *las$ - www.marplo.net - *peratori aritmetici compusi

HH , incrementare (adauga o unitate! o &ar<((; (echi&alent cu var1 - var1 0 1(! -- , decrementare (scade o unitate! o &ar<,,; (echi&alent cu var1 - var1 - 1(! H8 o &ar< (J nr; (echi&alent cu var1 - var1 0 nr( 77 'nr' poate fi un numar sau o &ariabila! -8 o &ar< ,J nr; (echi&alent cu var1 - var1 - nr( 77 'nr' poate fi un numar sau o &ariabila! ?8 o &ar< KJ nr; (echi&alent cu var1 - var1 2 nr( 77 'nr' poate fi un numar, &ariabila! #8 o &ar< 7J nr; (echi&alent cu var1 - var1 , nr( 77 'nr' poate fi un numar, &ariabila! I8 o &ar< MJ nr; (echi&alent cu var1 - var1 3 nr( 77 'nr' poate fi un numar sau o &ariabila!

- *peratori rationali si de egalitate


> , mai mare o - E ) , &ar< E &ar) J , mai mic o ) F - , &ar< F &ar) >8 , mai mare sau egal o - EJ ) , &ar< EJ &ar) J8 , mai mic sau egal o ) FJ - , &ar< FJ &ar) 88 , egalitate o L JJ >(- , &ar< JJ &ar) K8 , inegalitate o N OJ >(- , &ar< OJ &ar) 888 , egalitate stricta, atat ca tip de date cat si la &aloare o L JJJ >(- , &ar< JJJ &ar) K88 , inegalitate stricta (la tip de data sau la &aloare! o L OJJ 'L' (primul e de tip numar intreg, al doilea e sir!, &ar< OJJ &ar)

, caracterul egal, simplu (J! este un operator de atribuire, atribue o &aloare unei &ariabile (ex.6 var un4nume - ceva!. - *peratori logici

LL , S1 MM , SAC

, Acestia sunt cel mai des folositi cu instructiuni conditionale6 'if(!', 'else if(!'. 1ata un exemplu cu elementele prezentate in aceasta lectie (constante si cati&a operatori!. <. Deschideti un document Flash nou, ActionScript -.* ). Clic#,dreapta pe primul cadru din .imeline si alegeti Actions -. 1n fereastra care se deschide pentru scriere ActionScript, adaugati urmatorul cod6
const FD)4!:%trin" = <patrat<; // 7e(inire . variabile var latura:int = '; var masura:%trin" = < pixeli<; // !plica operatii cu operatori la variabila "latura" latura @= =; // sau latura = latura @ =; latura,,; // 7aca "latura" e mai mare decat ', aplica "trace()" i((laturaE') 5 trace(FD)4!@ < , <@ latura@ masura); 9 // 7e(inire constanta

=. Apasati 'Ctrl($nter'. "la0er,ul Flash &a apare gol, il puteti inchide; important la acest exemplu e panoul 2C."C. in care este afisat rezultatul dat de functia 'trace(!', dupa cum se &ede in imaginea urmatoare.

, Dupa ce au fost definite (declarate! constanta si &ariabilele, expresia 'latura 0- 5(' adauga unitati la &aloarea &ariabilei 'latura', iar 'latura--' ii scade o unitate. , 2bser&ati ca dupa ce &ariabila e declarata cu '&ar', pentru operatii cu ea si modificarea ei nu se mai foloseste '&ar', ci doar numele &ariabilei. #aca se incearca modi"icarea constantei .*O6MA. &care trebuie sa ramana "i!a', de e!. .*O6MA - 7ceva7(., in 2utput &a apare mesa de eroare. , $xpresia 'i"&latura89'' &erifica daca latura e mai mare decat L, si daca este mai mare, executa codul 'trace&*O6MA0 7 - 70 latura0 masura'('. Acesta &a returna in 2utput un sir format prin concatenarea (unirea! cu operatorul '(' a &alorilor constantei si &ariabilelor, dupa cum sunt adaugate in paranteza. , 4ezultatul din 2utput &a fi sirul 'patrat - 10 pi!eli'. Cand valorile variabilelor sunt numere, operatiorul .0. e!ecuta adunare, dar daca vreuna din variabile e un sir, operatorul .0. "ace unirea &alaturarea' lor intr-un sir. , Fisierul F/A cu acest exemplu poate fi descarcat de la6 Constante si 2peratori.

Instructiuni conditionale' i25 else5 switc+


Instructiunile conditionale determina programele sa testeze diferite conditii si in functie de acestea sa decida executia anumitor comenzi. Aceste instructiuni conditionale sunt6

i237 , executa comenzile dorite cand o conditie scrisa in paranteze este ade&arata. i237 ... else , executa anumite comenzi cand o conditie este ade&arata si alte comenzi cand aceasta este falsa. switc+ , selecteaza care comanda &a fi executata.

>. Instructiunea Di2D


'i237' (daca! este cea mai simpla instructiune conditionala. Forma generala a acestei instructiuni este urmatoarea 6

i2 3conditie7 ; ## Codul care &a 2i e$ecutat daca este Ade&arata conditia <

, Cnde PconditieP poate fi orice expresie alcatuita cu operatori rationali, de egalitate si logici. $x.6
i((' E F) 5 trace(<#onditie !devarata<); 9

, Daca rezultatul conditiei este .4C$ se executa codul dintre acolade, in caz contrar, cand conditia returneaza FA/S$, se trece peste acest cod.

F. Instructiunea Di2 ... elseD


1n exemplu anterior am &azut ca daca este ade&arata conditia din parantezele instructiunii 'if(!', se executa codul dintre acoladele ei, iar in caz contrar nu se intampla nimic. Folosind combinatia 'i237 ... else' (daca ... alt"el! putem stabili comenzi care sa fie executate si cand conditia instructiunii 'if(!' este FA/S$. Forma generala a instructiuni 'if(! ... else' este urmatoarea 6

i2 3conditie7 ; ## codul care &a 2i e$ecutat daca este Ade&arata conditia < else ; ## codul ce &a 2i e$ecutat daca conditia este 2alsa <

, Cnde PconditieP poate fi orice expresie logica. Daca rezultatul conditiei este .4C$ se executa codul dintre primele acolade, care apartin de 'if(!', in caz contrar, cand conditia returneaza FA/S$, sunt executate comenzile din acoladele de la 'else'. De exemplu6
var ziua:%trin" = <oBzi<; i((ziua==<duminica<) 5 trace(<%tau acasa<); 9 else 5 trace(<4er" la lucru<); 9

, Daca 'ziua' are &aloarea 'duminica' &a afisa in 2utput sirul 'Stau acasa', altfel, se executa codul din acoladele lui 'else' (afiseaza in 2utput 'Merg la lucru'!.

3 1ormula Delse i237D


Cu 'if(! ... else' sunt posibile executia doar a doua optiuni, cea de la 'if(!' sau de la 'else'. Dar sunt stuatii in care a&em mai multe optiuni, in acest caz se foloseste formula 'else i237' (alt"el daca!. Cu aceasta se pot crea si alte optiuni suplimentare intre cele doua. Sintaxa generala pentru folosirea acestei formule este6

i2 3conditie 17 ; ## codul care &a 2i e$ecutat daca este Ade&arata conditia > < else i2 3conditie $7 ; ## codul ce &a 2i e$ecutat daca prima conditie este 1alsa si este Ade&arata conditia F

< else i2 3conditie %7 ; ## codul care &a 2i e$ecutat daca primele doua conditii sunt 1alse si este Ade&arata conditia 3 < ## ... else ; ## codul e$ecutat daca toate conditiile sunt 1alse < , "ot fi adaugate oricate optiuni 'else if'. De exemplu, in urmatorul cod,
var ziua:%trin" = <oBzi<; i((ziua==<duminica<) 5 trace(<%tau acasa<); 9 else i((ziua==<luni<) 5 trace(<4er" la cursuri<); 9 else i((ziua==<sambata<) 5 trace(<4er" la bunici<); 9 else 5 trace(<4er" la lucru<); 9

, 1n functie de &aloarea lui 'ziua', &a fi afisat in 2utput sirul din optiunea cu 'trace(!' corespunzaoare. Daca 'ziua' nu are &reuna din &alorile6 duminica, luni, sambata, se executa codul din acoladele lui 'else'.

N. Instructiunea switc+
Aceasta instructiune e folosita pentru a compara o &aloare cu altele dintr,o lista, si in functie de acea &aloare se executa codul asociat ei in lista 'switc+'. Sintaxa generala a instructiuni 'switch' este urmatoarea.

switc+ 3e$presie7 ; case &aloare>' cod e$ecutat daca e$presie 8 &aloare> brea.9 case &aloareF' cod e$ecutat daca e$presie 8 &aloareF brea.9 case &aloare3' cod e$ecutat pt. e$presie 8 &aloare3 brea.9 de2ault ' cod e$ecutat daca e$presie e di2erit de &aloare>5 &aloareF sau &aloare3 <

, "rima data este e&aluata expresia scrisa intre paranteze rotunde, la 'switch(!', apoi &aloarea expresiei este comparata pe rand cu fiecare &aloare determinata de 'case'. Daca se gaseste o identitate se executa codul asociat acelui 'case'. Apoi se iese din instructiunea 'switch'. Daca, parcurgand fiecare 'case', nu se gaseste o egalitate, se executa codul de la 'default'. "rin folosirea lui 'brea#' se opreste parcurgerea corpului instructiunii atunci cand s,a gasit o &aloare egala cu PexpresieP si se iese din 'switch'. , 1nstructiunea 'switch' poate inlocui un sir de conditii cu 'else if'. De exemplu6
var ziua:%trin" = <oBzi<; switc$ (ziua) 5 case <duminica<: trace(<%tau acasa<); breaG; case <luni<: trace(<4er" la cursuri<); breaG; case <sambata<: trace(<4er" la bunici<); breaG; de(ault: trace(<4er" la lucru<); 9

6. *peratori logici si instructiunile conditionale


2peratorii logici sunt 'LL' si 'MM'. 4olul lor este asemanator cu cel al operatorilor relationali si de egalitate, in sensul ca si acestia compara &aloarea a doi operanzi. 2peratorii logici compara operatii, expresii de cod, iar rezultatul lor este unul din &alorile .4C$ (Adevarat! sau FA/S$ (*als!.

e$p> LL e$pF , 4eturneaza .rue daca si 'exp<' si 'exp)' sunt Ade&arate; altfel, returneaza False. e$p> MM e$pF , 4eturneaza .rue daca oricare din 'exp<' sau 'exp)' e Ade&arat; altfel, daca amandoua sunt false, returneaza False. e$p> LL e$pF MM e$p3 , 4eturneaza .rue daca expresia (exp< QQ exp)! sau 'exp)' e Ade&arata; altfel, returneaza False.

De exemplu6

3>F LL 6J84 .rue (ambele adevarate! 3>F MM 6>84 .rue (una din e!presii, prima e adevarata! 3JF LL 6>4 MM NJ: .rue (a treia e!presie, dupa :: &SA;', e adevarata!

Datorita rezultatului .rue sau False pe care,l dau acesti operatori logici, ei sunt folositi cu instructiuni conditionale, contribuind la efectuarea unor conditii mai complexe in parantezele instructiunii 'if(!' si 'else if(!'. 1ata un exemplu6
var ziua:%trin" = <luni<;

var nr:;umber = '; i((ziua==<duminica< HH nr==') 5 trace(<%tau acasa<); 9 else i((ziua==<luni< II nrEJ) 5 trace(<4er" la cursuri<); 9 else 5 trace(<4er" la lucru<); 9

, 1n 2utput &a fi afisat 'Merg la cursuri' deoarece conditia '&+iua--7duminica7 << nr--9'' returneaza False @nu sunt amandoua expresii ade&arateA, iar '&+iua--7luni7 :: nr8='' returneaza .rue @cu 'RR' e suficient una sa fie ade&arataA.

O. *peratorul conditional DP 'D


2 alta metoda de a executa un cod in functie daca o expresie este Ade&arata sau Falsa e operatorul DP 'D (intrebare doua puncte!. Acest operator conditional, desi arata diferit de ceilalti, este o forma prescurtata a instructiunii 'if(! else'. Sintaxa generala de folosire a lui este6

e$presie-conditionala P daca-T,G/ ' daca-1ALS/9

, 2peratorul conditional e&alueaza expresia conditionala. Daca expresia are &aloarea .4C$, operatorul conditional returneaza &aloarea de la 'daca-T,G/'; in caz contrar, returneaza &aloarea de la 'daca-1ALS/'. 1ata un exemplu6
var a:;umber = J =; var b:int = '; // %e de(ineste "c", in (unctie de "aEb" var c:%trin" = (a E b) K <valoare pt True< : <val trace(c); // valoare pt True /: 3c$ivalent cu: i((aEb) 5 var c:%trin" = <valoare pt True<; 9 else 5 var c:%trin" = <val pt False<; 9 :/ pt False<

, 1n acest cod se defineste o &ariabila 'c' in functie de relatia dintre alte doua &ariabile (a si b!. Daca 'a' este mai mare decat 'b', 'c' &a primi &aloarea 'valoare pt. /rue', in caz contrar, 'c' &a a&ea 'val. pt. *alse'. , "entru &erificare, functia 'trace(c!' afiseaza in 2utput &aloarea pe care 'c' a primit,o. Comentariu care este dupa 'trace(c!' arata asemanarea cu 'if(! else'. "e langa atribuirea unei &alori in functie de rezultatul unei expresii, acest operator conditional poate fi utilizat in aceeasi forma si la determinarea apelarii unei anumite functii, dupa rezultatul unei expresii logice. Formula este6

3e$presie-logica7 P dacaTrue37 ' daca1alse379

, 'daca.rue(!' si 'dacaFalse(!' pot fi considerate doua functii. $xemplu6


(var/ == var.) K oFunctie() : altaFunctie();

, Daca '&ar<' este egal cu '&ar)', &a fi apelata 'oFunctie(!', in caz contrar este executata 'altaFunctie(!'.

Instructiuni repetiti&e - 1*,


Instructiunile repetiti&e se folosesc atunci cand se doreste efectuarea unei comenzi de mai multe ori. Instructiunea 2or37 (denumita si bucla "or&'! poate fi conasiderata cea mai des folosita instructiune repetiti&a. 1n ActionScript - putem folosi bucla 'for(!' cu mai multe &ariante6

2or , la fel ca si in alte limba e de programare, executa codul de un numar specificat de ori 2or ... in , executa cate un set de instructiuni pentru fiecare proprietate dintr,un obiect sau element din Arra0 2or eac+ ... in , cu aceasta se pot manipula direct proprietatile sau functiile din cadrul unui obiect.

>. Instructiunea 2or


Aceasta are urmatoarea forma generala6

&ar i'int 2or 3i8nr@start9 iJnr@end9 iHH7 ; cod care &a 2i e$ecutat < Sau 6

2or 3&ar i'int8nr@start9 iJnr@end9 iHH7 ; cod care &a 2i e$ecutat <

, 'i' este o &ariabila de initializare a buclei 'for(!', folosita ca un contoar pentru numarul de repetari. "oate fi utilizata si alta litera sau cu&ant, ca la orice &ariabila. Se poate "olosi si direct .var i = nr&start;., dar din motivele preci+ate in lectia despre variabile, este indicat sa se speci"ice si tipul. , 'nr@start' este un numar initial de la care incep repetarile executiei codului dintre acolade. , Conditia 'iJnr@end' &erifica si asigura ca numarul de repetari sa se incadreaza intr,o anumita &aloare, stabilita la 'nr?end'. Cat timp rezultatul acestei conditii este .4C$ se executa inca o data codul dintre acolade.

, 'iHH' incrementeaza cu o unitate &aloarea la care a a uns 'i', apoi aceasta &aloare este &erificata din nou de 'iFnr?end', pana cand rezultatul este FA/S$. Atunci se opreste executia buclei. , >n loc de .i?nr4end. se poate "olosi si alta conditie relationala, de e!emplu .i?-nr4end. 1ata un exemplu simplu de utilizare a instructiunii 'for'6
var total:int = /; // %e de(ineste o variabila // %e executa o bucla "(or()" de > ori, care dubleaza mereu "total" (or(var i:int=&; iL>; i@@) 5 total := .; trace(total); 9 // In Dutput a(iseaza 2 4 8 16

, Dupa ce e difinita &ariabila 'total', la instructiunea 'for(!' se atribue unei &ariabile PiP &aloarea *, se &erifica conditia (iF=! care este ade&arata si se executa corpul instructiunii (dintre acolade!. , Codul dntre acolade dubleaza &aloarea lui 'total', iar functia 'trace(total!' afiseaza in 2utput &aloarea lui, apoi se incrementeaza PiP cu o unitate (i((!, acum PiP are &aloarea <. , 1nstructiunea 'for(!' &erifica din nou conditia (iF=! si fiindca este ade&arata, se executa iar codul dintre acoladele ei, apoi se incrementeaza &aloarea lui PiP, ..., si tot asa pana cand PiP &a a unge sa aibe &aloarea = care la &erificarea conditiei (iF=! returneaza FA/S$, moment in care se termina executia instructiunii 'for(!'. , Ca rezultat, in 2utput afiseaza 2 @ 9 1A. B Adesea, bucla 'for(!' este folosita pentru parcurgerea elementelor Arra0, dupa cum se &ede in urmatorul exemplu6
// %e de(ineste o variabila de tip !rravar arr:!rra- = M<site<, <cursuri<, <tutoriale<N; // %e parcur"e !rra-,ul, de la & (primul element) // pana la numarul de elemente din !rra- (a(lat cu "arr len"t$") (or(var i:int=&; iLarr len"t$; i@@) 5 // !(iseaza in Dutput (iecare element parcurs, // a(lat cu numarul de ordine "i" (care e incrementat la (iecare executie a buclei) trace(arrMiN); 9 // In Dutput a(iseaza "site cursuri tutoriale"

, 9ariabila de tip Arra0 &a fi prezentata amanuntit in lectiile urmatoare. $xplicatiile necesare pentru obiectul acestei lectii sunt cele din cod. 1n interiorul instructiunii 2or (ca si la instructiunea 'if'!, intre acolade pot fi introduse si alte instructiuni 'for', sau alte instructiuni conditionale, acest lucru se numeste imbricarea instructiunilor.

F. Instructiunea 2or ... in

"entru utilizarea acestei instructiuni trebuie sa a&eti cunostinte despre obiectele ActionScript asa ca &a trebui sa re&eniti asupra ei dupa ce le &eti in&ata , in lectiile urmatoare . Cu '2or ... in' se poate afla numele fiecarui element dintr,un obiect sau cheie din Arra0 si se executa cate un set de instructiuni pentru fiecare element sau proprietate parcursa. Daca obiectul nu are nici o proprietate nu se desfasoara nici o repetare. 1nstructiunea '2or ... in' are urmatoarea forma generala6

2or 3var n!me&el'(tring in )biect7 ; Instructiuni <

, Cnde 'nume? el' este o &ariabila de tip sir. "entru fiecare repetare a executiei instructiunii, la 'nume?el' i,se atribuie ca &aloare numele elementului sau proprietatii curente parcurse, din '2biect' (care poate fi si un Arra0!. , $xecutia buclei se face pana cand sunt parcurse toate. 1ata un exemplu practic (e!plicatiile necesare sunt in comentariile din cod!.
// %e de(ineste un obiect var obO:DbOect = 5<site<:<www marplo net<, <"en<:<cursuri<, <web<:<tutoriale<9; // #u "(or in" se parcur"e Dbiectul (or(var elm:%trin" in obO) 5 // %e aplica "trace()", care, pentru (iecare element curent parcurs // returneaza numele si valoarea lui trace(elm@ < , <@ obOMelmN); // obOMelmN returneaza valoarea elementului din "obO" care are numele dat de "elm" 9 // In Dutput va a(isa: ""en , cursuri site , www marplo net web , tutoriale"

3. Instructiunea 2or eac+ ... in


Aceasta este o alta &ersiune a lui 'for ... in', noua in ActionScript -. Sintaxa generala este6

2or eac+ 3var element')b*ect in )biect7 ; Instructiuni <

, Desi pare asemanatoare cu standardul 'for ... in', principala diferenta la '2or eac+ ... in' este faptul ca prin aceasta se pot manipula direct proprietatile sau functiile din cadrul unui obiect. , Aici 'element' este proprietatea din 'obiect', cu tot ce contine ea, nu doar numele ei. "entru a cunoaste mai bine diferenta, iata exemplul anterior, dar folosind 'for each ... in'.
// %e de(ineste un obiect var obO:DbOect = 5<site<:<www marplo net<, <"en<:<cursuri<, <web<:<tutoriale<9;

// #u "(or eac$ in" se parcur"e Dbiectul (or eac$ (var elm:DbOect in obO) 5 // %e aplica "trace()", care, pentru (iecare element curent parcurs returneaza valoarea lui trace(elm); 9 // In Dutput va a(isa: "tutoriale cursuri www marplo net"

, Diferenta se obser&a la 'trace(elm!', aici 'elm' a returnat continutul (&aloarea! elementului, pe cand la 'for ... in' returna numele lui. , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. ). -. =. For < For ) , (Arra0! For ... in For each ... in

Instructiuni repetiti&e - !(IL/


Aceasta instructiune are doua &ariante6 H;1/$ simplu si D2 ... H;1/$.

>. !+ile
Instructiunea w+ile (denumita si 'bucla w$ile'! este asemanatoare cu 'for(!', la fel ca aceasta, si w+ile37 repeta executia unui cod (din corpul buclei! cat timp o expresie este ade&arata. Diferenta fata de 'for(!' este aceea ca 'w+ile37' are un singur parametru intre parantezele rotunde. Sintaxa generala este6

w+ile 3conditie7 ; codul care &a 2i e$ecutat <

, Codul dintre acolade &a fi executat in continuu, pana 'conditie' returneaza False sau este oprit intentionat. Atentie, daca .conditie. ramane mereu /rue, repetarea e!ecutiei buclei se va "ace la in"init, pana cand eventual *las$ va genera eroare si opreste tot scriptul. #e aceea, in cadrul corpului buclei &intre acolade' se adauga in general o declaratie care modi"ica elementele de la .conditie.. 1ata un exemplu de cod simplu cu 'while(!'.
var total:int = /; // %e de(ineste o variabila de lucru // %e de(ineste si o variabila care va (i (olosita in "conditie" // 7e asemenea, va avea si rol do contor, pt controlul numarului de repetari var i:int=&; // %e executa o bucla "w$ile()", care dubleaza mereu "total"

w$ile(iL>) 5 total := .; trace(total); i@@; // Incrementeaza variabila contor cu o unitate 9 // In Dutput a(iseaza 2 4 8 16

, "entru controlul numarului de repetari, se declara &ariabila PiP dandu,i &aloarea *. , 1nstructiunea 'while' &erifica conditia (aici 'iF='! care este ade&arata si permite executarea codului dintre acolade, care dubleaza &aloarea lui 'total', iar functia 'trace(total!' afiseaza in 2utput &aloarea lui, apoi se incrementeaza PiP cu o unitate (i((!, acum PiP are &aloarea <. , 1nstructiunea 'while(!' &erifica din nou conditia (iF=! si fiindca este ade&arata, se executa iar codul dintre acoladele ei, apoi se incrementeaza &aloarea lui PiP, ..., si tot asa pana cand PiP &a a unge la &aloarea = care la &erificarea conditiei (iF=! returneaza FA/S$, moment in care se termina executia instructiunii 'while(!'. , Ca rezultat, in 2utput afiseaza 2 @ 9 1A.

F. 0o ... !+ile
Asemanatoare in mare parte cu instructiunea 'while', instructiunea 'do ... w+ile' intai executa codul din corpul instructiunii (care e dupa D2!, apoi se &erifica conditia. "rocesul se repeta pana cant conditia returnbeaza FA/S$. Diferenta fata de 'while(!' simplu este faptul ca la 'do ... w+ile' corpul functiei este executat cel putin o data, chiar daca conditia nu este ade&arata. Forma generala a acestei instructiuni este6

do ; codul care &a 2i e$ecutat < w+ile 3conditie79


// %e de(ineste o variabila de lucru

1ata un exemplu6

var total:int = /;

// %e de(ineste si o variabila care va (i (olosita in "conditie" // 7e asemenea, va avea si rol do contor, pt controlul numarului de repetari var i:int = /; // %e executa o bucla "do w$ile", care dubleaza mereu "total" do 5 total := .; trace(<total este <@ total); i@@; // Incrementeaza variabila contor cu o unitate 9 w$ile(iL&); // In Dutput a(iseaza total este 2

, Aceasta functie afiseaza in 2utput 'total este 2'. , 2bser&ati ca desi conditia (xF*! este de la inceput Falsa (PiP fiind definit cu &aloarea <!, codul

dintre acolade este totusi executat o singura data. , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. Hhile ). Do ... Hhile

GtiliQare -rea. si Continue


1nstructiunile 'for' si 'while' sunt adesea folosite si cu alte instructiuni 'complementare' care pot fi executate impreuna cu acestea, anume brea. si continue. Cand este folosita o instructiune repetiti&a, aceasta continua sa se repete pana cand conditia returneaza FA/S$. Aceasta executie poate fi schimbata cu a utorul instructiunilor brea. si continue, care dau posibilitatea intreruperii ciclului sau iesirea din acesta inainte de a se a unge la sfarsit (la ultima acolada!.

>. -rea.
-rea. , intrerupe definiti& executarea buclei. $xemplu cu 'for(!' si 'brea#'6
var total:int = /; // %e de(ineste o variabila

// %e executa o bucla "(or()" de > ori, care dubleaza mereu "total" (or(var i:int=&; iL>; i@@) 5 total := .; i((total==') breaG; // Dpreste executia completa cand total=' trace(<i=<@ i@ < , total=<@ total); 9 // In Dutput a(iseaza "i=0 - total=2 i=1 - total=4"

, $xpresia 'i"&total--9' brea%(' &erifica daca 'total' are &aloarea L, si cand egalitatea este confirmata, se geneereaza executia instructiunii 'brea#', care &a determina oprirea in acel moment a executiei codului care este dupa ea in acolade, implicit si oprirea altor repetari a buclei 'for(!', chiar daca conditia dintre paranteze e inca asde&arata. , Cu acest cod din finctia 'trace(!' (trace&7i - 70 7 - total - 70 total'(! se poate cunoaste ce &aloare are 'i' si 'total' dupa fiecare executie a buclei 'for(!'. , 1n 2utput afiseaza 'i-0 - total-2 i-1 - total-@'. Desi 'total' a unge la &aloarea L cand se opreste complet executia instructiunii 'for(!', deoarece 'trace(!' este dupa 'brea#', nu mai e afisata si aceasta &aloare.

F. Continue
continue , intrerupe executia repetarii curente, inainte de a fi executate celelalte operatii de dupa ea din corpul (acoladele! buclei, apoi se &erifica din nou conditia si se continua cu executarea

ciclului. Studiati si urmatorul exemplu, in care este folosit 'continue' cu 'while(!'.


var total:int = /; // %e de(ineste o variabila de lucru

// %e de(ineste si o variabila care va (i (olosita in "conditie" // 7e asemenea, va avea si rol do contor, pt controlul numarului de repetari var i:int=&; // %e executa o bucla "w$ile()", care dubleaza mereu "total" w$ile(iL>) 5 total := .; i((total==> II total==') continue; // %are peste executia codului urmator cand "total" are valoarea > sau ' trace(<i=<@ i@ < , total=<@ total); i@@; // Incrementeaza variabila contor cu o unitate 9

1n 2utput afiseaza6 iJ* , totalJ) iJ< , totalJ<+ iJ) , totalJ-) iJ- , totalJ+= , 2bser&ati ca atunci cand 'total' are &aloarea = sau L, 'i"&total--@ :: total--9', 'prin instructiunea 'continue' se intrerupe executia codului care urmeaza dupa aceasta (aici 'trace&7i-70 i0 7 - total-70 total'(' si 'i00('! din repetarea curenta, dar se continua cu &erificare conditiei instructiunii 'while' si executia ciclului pana cand 'i' &a a unge la =. , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. 8rea# ). Continue

1unctii - Creare si GtiliQare


2 2unctie este o bucata de cod, sau un set de instructiuni care sunt executate doar atunci cand respecti&a functie este apelata. *unctiile "ac lucruri sa se intample doar atunci cand se vrea asta. 2 alta utilitate a 1unctiilor este aceea ca a uta la di&izarea mai multor sarcini pe care trebuie sa le faca un program. 2 functie poate contine mai multe instructiuni si comenzi care ulterior pot fi utilizate usor si de mai multe ori prin apelarea functiei respecti&e. Daca un program necesita multe linii de cod, folosind functiile putem imparti codul in parti mai mici pe care le putem utiliza separat acolo unde este ne&oie. "ot fi doua grupe generale de 2unctii6

prede2inite , care sunt incluse direct in limba ul de programare (cum e de exemplu 'trace(!, stop(!, pla0(!, ...'!.

create de programator o care returneaza o &aloare o care nu returneaza nici o &aloare

>. Creare 3de2inire7 1unctii


2 functie se creaza utilizand cu&antul special 2unction (functioneaza la fel ca '&ar' pt. &ariabile!, urmat de numele ei si corpul functiei. Sintaxa pentru a crea o functie are ) &ariante6 , Forma simpla, generala

2unction nume1unctie3param>5 paramF5 ...7 ; Codul care &a 2i e$ecutat <

, Forma complexa (sau completa!

2unction nume1unctie3param>'tip>5 paramF'tipF5 ...7'Tip ; Codul care &a 2i e$ecutat <

, 'numeFunctie' este numele functiei care e folosit pentru apelarea ei. 4especta aceleasi reguli ca si la numele de creare a &ariabilelor. , 'param<, param), ...' sunt parametri ei (&ariabile! folosite de functie si a caror &aloare este transmisa si preluata cand e apelata. "arametrii nu sunt obligatorii, o functie poate fi definita si fara parametri, dar se pastreaza parantezele rotunde. Sau pot fi si &alori fixe, ex.6 '&param1, .un4sir., 9''. , 'tip<', 'tip)', etc., de la forma complexa, definesc tipul de &ariabila a parametrului respecti& (de ex.6 param)String, 'param' este parametrul, 'String' reprezinta tipul de date pe care,l poate contine!. , '.ip', de la forma complexa (cel dupa paranteze rotunde!, defineste tipul de data pe care,l &a returna functia (precum 'tipul' de date al unei &ariabile!. Cand functia nu are o declaratie 'return' se foloseste '&oid' ca tip general. Oricare din .tip1., .tip2., ./ip., pot "i omise. 1ata un exemplu cu o functie simpla.
// %e declara o (unctie, cu numele "salut" (unction salut(mesaO:%trin") 5 trace(mesaO); 9

, Cand functia este apelata, dupa cum puteti &edea in continuare, se executa codul dintre acoladele ei.

F. Apelare 1unctii
Dupa ce a fost creata o functie, pentru a fi utilizata ea trebuie apelata. Apelarea unei functii se face utilizand numele ei. B 2 functie fara parametru se apeleaza astfel6 nume1unctie379 B 2 functie care contine parametri (denumita si 'modulara'! se apeleaza in felul urmator6 nume1unctie3arg>5 argF5 ...79 , unde 'arg<, arg), ...' sunt argumentele (&ariabile, &alori, siruri! transmise functiei (conform cu numarul si ordinea parametrilor ale ei!, care in general sunt folosite in codul din corpul functiei. >n locul unde este apelata o "unctie va "i e!ecutat codul din ea. De exemplu, iata cum poate fi apelata functia declarata anterior6
// %e declara o (unctie, cu numele "salut" (unction salut(mesaO:%trin") 5 trace(mesaO); 9 salut("+ine ai venit"); venit"

// %e apeleaza (unctia, cu ar"umentul "+ine ai

, /a apelare, sirul 'Bine ai venit' e transmis ca argument, functia il preia si,l retine in 'mesa ' (functioneaza ca si o &ariabila!, care e transmis la codul dintre acoladele ei; aici la 'trace(mesa !', care &a afisa in 2utput 'Bine ai venit'. 2 functie poate fi apelata de mai multe ori. Acesta fiind principalul a&anta , ca, desi codul ei este scris o singura data, poate fi utilizat de oricate ori e necesar. , Cum ar fi la exemplu anterior6 salut3D-ine ai &enitD79 salut3D0rum bunD79

3. GtiliQare return
"entru ca o functie sa returneze special o &aloare, un rezultat, foloseste instructiunea return. Aceasta specifica &aloarea pe care o returneaza functia cand este apelata. 1ata un exemplu din care puteti intelege modul de aplicare a instructiunii return6
// %e declara o (unctie, cu numele "suma" si . parametri: "a", "b" (unction suma(a:;umber, b:int) 5 // %e adau"a suma lui <a< si <b< intr,o variabila <c< var c:;umber = a@b; 9 return c; // Functia returneaza valoarea lui <c<

, /a apelare, de ex.6 s!ma(+# 8); &a returna &aloarea lui 'c - C09' (<>!. return se poate utiliza si in functii fara parametru.

B 9aloare returnata de o functie, care foloseste 'return', poate fi atribuita direct unei &ariabile; dupa cum este prezentat in exemplul urmator.
// %e declara o (unctie, cu numele "suma" si . parametri: "a", "b" (unction suma(a:;umber, b:int) 5 // %e adau"a suma lui <a< si <b< intr,o variabila <c< var c:;umber = a@b; 9 return c; // Functia returneaza valoarea lui <c<

// %e apeleaza (unctia "suma" ca valoare a unei variabile "d" var d:;umber = suma(F 6, '); trace(d); // Aeri(icare rezultat stocat in "d" (/6 6)

, 1n 2utput &a apare '<>.>', &aloarea &ariabilei 'd' care este cea returnata de functia apelata. 0e2inire tip date returnate Cand se defineste un tip de data pentru o &ariabila, constanta sau parametru, cu doua,puncte (6! dupa numele elementului, indica programului Flash ce tip de informatie ar trebui stocata in acel element. /a fel se poate proceda si cu functiile care folosesc declaratia 'return'. Caracterul doua,puncte (6! si tipul se scriu dupa parantezele rotunde ale functiei, forma generala fiind6

2unction nume1unctie3param>5 paramF5 ...7'Tip ; Codul care &a 2i e$ecutat return &aloare9 <

, '.ip' poate fi orice tip de data folosit pt. &ariabile (String, 3umber, int, &oid, K, etc.! , De exempu6

, Daca se doreste ca tipul de data returnat sa fie sir, se specifica String , Daca nu se stie sigur tipul datei ce &a fi returnata, se foloseste caracterul asterix ? (reprezinta tip nedefinit! , &oid se adauga la functii care nu folosesc comanda 'return'. #aca se "oloseste .void. la "unctii cu .return., va genera eroare.

1ata exemplul anterior, de data aceasta cu specificarea tipului de data returnat de functie.
// %e declara o (unctie, cu numele "suma" si . parametri: "a", "b" (unction suma(a:;umber, b:int):int 5 // %e adau"a suma lui <a< si <b< intr,o variabila <c< var c:;umber = a@b; return c; 9 // Functia returneaza valoarea lui <c<

// %e apeleaza (unctia "suma" ca valoare a unei variabile "d" var d:;umber = suma(F 6, '); trace(d); // Aeri(icare rezultat stocat in "d" (/6)

, ''int' dupa parantezele rotunde seteaza (si forteaza! ca tipul de data returnat sa fie '1nteger' (numar natural fara &irgula!. , Se obser&a ca desii, comform argumentelor de la apelare, 'c J N.>(L' da &aloarea <>.>, functia returneaza &ariabilei 'd' &aloarea <>, (partea din numar fara &irgula, dupa tipul 'int' specificat!. , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. Functii , apelare ). Functii , return -. Functii , return .ip

1unctii - GtiliQare a&ansata


1n aceasta lectie sunt prezentate lucruri mai a&ansate legate de utilizarea functiilor, ca o a doua parte a lectiei precedente. Deoarece scopul utilizarii Flash e acela de a afisa intr,un pla0er sau pagina web efecte &izuale si animatii, in exemplele prezentate in aceasta lectie e folosita instanta unui obiect 5o&ie Clip din Scena (metoda mai atragatoare decat testarea in Output, cu .trace&'.!. 1nainte de a trece la studierea si testarea exemplelor, deschideti un document Flash nou, desenati in Scena un dreptunghi pe care,l transformati in 5o&ie Clip (din meniul )odi2 -> Con&ert to S mbol, iar la ,-pe alegeti )o&ie Clip!. 1n panoul "roperties dati numele de instanta testClip dreptunghiului din Scena (in caseta unde apare './nstance 0ame1, dupa cum este in imaginea urmatoare'!.

>. Setare parametri cu &aloare 2i$a


1n ActionScript - se pot seta parametrii unei 2unctii cu &aloare fixa, similar cu definirea unei &ariabile. Acest lucru face ca sa nu mai fie necesar adaugarea unui argument pentru acel parametru la apelare, parametrul fix &a fi transmis automat codului dintre acolade. 1ata un exemplu (codul va "i aplicat in documentul creat mai sus, cu >nstanta .testClip., de tip MovieClip!. , Clic#,dreapta pe primul Cadru din .imeline si alegeti Actions, se deschide fereastra pentru ActionScript, in care adaugati urmatorul cod6
// %e creaza o (unctie cu doi parametri, al doilea cu valoare (ixa (unction testF(d-:;umber, rotatie:int = >6):void 5 // %e aplica valorile parametrului la proprietatile "-" si "rotation" a Instantei din %cena test#lip - = d-; test#lip rotation = rotatie; 9 testF(/&); // %e apeleaza (unctia

, Cu 'testClip.0' se defineste distanta I, fata de latura de sus, iar 'rotation' este o proprietate pentru setare (adaugare! rotire. .estati rezultatul apasand 'Ctrl($nter', dreptunghiul din scena &a fi mutat la distanta '0J<*' si rotit => grade, dupa cum e scris in codul functiei (precum se &ede in imaginea urmatoare!.

, 2bser&ati ca la apelare 'testF(<*!' e transmis doar un singur argument (<*!, pentru 'd0', desi functia are ) parametri, al doilea 'rotatie' are de a &aloare si e transmisa automat la codul din ea. , Daca se specifica la apelarea functiei un argument si pentru parametrul fix, &aloarea argumentului transmis &a inlocui pe cea setata la parametru. 1ncercati de ex.6 'testF(10# 8);', L &a inlocui &aloarea => de la 'rotatie'. 1mportant , /a o functie cu mai multi parametri (fixi si &ariabili!, cei fixi trebuie scrisi mereu la urma, dupa cei &ariabili. , De ex.6 function testF(d063umber, rotatie6int J =>, dx63umber! nu e &alida deoarece dupa 'rotatie' (care e cu &aloare fixa! urmeaza 'dx' (care e &ariabil!.

F. GtiliQare 3... parametru7


1n ActionScript - e adaugata o noua facilitate pentru functii, denumita 'rest parameters' (resturi de parametri!. Acest 'rest parametrs' e un simbol trei,puncte (...! ce reprezinta un numar &ariabil de parametri ca un Arra0, urmat de un nume pentru acel Arra0. Aceasta permite apelarea functiei cu oricati parametri se doreste, fiind toti stocati intr,un Arra0. , #espre ArraD vor "i pre+entate mai multe e!plicatii in lectiile urmatoare. 1ata un exemplu (codul va "i aplicat in documentul creat la inceput, cu >nstanta .testClip., de tip MovieClip!. , Clic#,dreapta pe primul Cadru din .imeline si alegeti Actions, se deschide fereastra pentru ActionScript, in care adaugati urmatorul cod (daca exista de a alt cod AS-, stergeti,l!6
// %e creaza o (unctie cu un "rest parameters" (unction testF.( numere):void 5 // %e de(ineste o variabila in care se va adau"a suma numerelor trimise ca ar"umente var latura:;umber = &; // %e parcur"e cu "(or eac$ in" (iecare element din !rra- "numere" // 1a (iecare parcur"ere se adau"a valoarea elementului curent in "latura" (or eac$ (var num:;umber in numere) 5 latura @= num; 9 // %e de(ineste lun"imea si inaltimea instantei dreptun"$i din %cena "test#lip" // cu valoarea variabilei "latura", obtinuta din suuma ar"umentelor test#lip widt$ = latura; test#lip $ei"$t = latura; 9 testF.(', .&, >&, 6&); ca ar"umente // %e apeleaza (unctia, cu mai multe numere

, 9aorile transmise functiei la apelare sunt continute in Arra0,ul denumit 'numere'. , 'width' si 'height' sunt proprietati pentru lungime si inaltime.

.estati rezultatul apasand 'Ctrl($nter'. Figura din scena &a de&eni patrat (precum se &ede in imaginea de mai os!, cu latura egala cu suma argumentelor transmise (90200@00E0 - 119!.

"e langa s0mbolul 'rest parameters' (...! pot fi adauati si parametri normali. /a apelare si executia functiei toti parametri (inclusi& cei normali! &or fi stocati in Arra0,ul pt. 'rest parameters'.

3. 0e2inire 2unctie direct in &ariabila


2 alta metoda de a crea o functie este aceea de a fi definita direct intr,o &ariabila de tip 'Function'. Sintaxa generala este6

&ar nume1unctie'1unction 8 2unction 3param>5 paramF5 ...7 ; Codul 2unctiei <

, Aceasta forma a functiei se apeleaza normal, cu numele &ariabilei si argumentele intre paranteze rotunde, nume1unctie3arg>5 argF5 ...79 , Diferentele fata de crearea standard a unei functii sunt urmatoarele6

2 functie definita standard poate fi apelata in cod si inainte de locul unde e creata, dar aceasta, tip,&ariabila, poate fi apelata doar dupa declararea ei. Functia normala exista in memorie ca parte a obiectului ce o contine (in cazul 22"!, dar aceasta, tip,&ariabila, este independenta in memorie, ca orice &ariabila, poate fi stearsa si modificata.

Studiati si testati singuri urmatorul exemplu (in documentul Flash creat la inceput, cu instanta 'testClip'!.
// %e creaza o (unctie tip,variabila, denumita "vrF", cu = parametri var vrF:Function = (unction (obO:4ovie#lip, sx:;umber, s-:;umber):: 5 // "obO" reprezinta instanta de tip 4ivie#lip a unui obiect din %cena, transmis ca parametru // la "obO" se de(inesc /modi(ica proprietatile "scaleP" si "scale8" obO scaleP = sx; obO scale8 = s-; 9 // %e apeleaza (unctia, transmitand ca ar"ument pt din %cena vrF(test#lip, . 6, / >); "obO" numele instantei

, "roprietatile 'scaleS' si 'scaleI' multiplica lungimea si inaltimea obiectului (aici 'ob '! de atatea ori cat este &aloare lor. 1ndicat este totusi utilizarea formei standard.

N. =ariabile si 2unctii
9ariabilele care sunt declarate in afara unei functii, inaintea ei, pot fi utilizate si in codul functiei. 9ariabilele care sunt create in interiorul functie pot fi folosite doar in cadrul ei, in afara acelei functii ele nu exista. Acestea se numesc '&ariabile locale'. Studiati urmatorul exemplu6
var extBvr:int = /'; // Aariabila de(inita in a(ara oricarei (unctii

// #reare (unctie care (oloseste variabila externa "extBvr", din a(ara ei (unction oFunctie():;umber 5 // %e creaza o variabila in interiorul (unctiei var inBvr:;umber = F; // %e adau"a la aceasta si variabila externa inBvr @= extBvr; return inBvr; 9 trace(oFunctie()); (unctie (.6) // %e a(iseaza in Dutput valoarea returnata de // )eturneaza valoarea (inala a lui "inBvr"

// Testeazaa (isarea valorii variabilei "inBvr" create in interiorul (unctiei (daca se ster" "//") // trace(inBvr);

, 2bser&ati ca la apelare, functia a returnat )>, deoarece a folosit si &aloarea lui 'ext?&r', chiar daca e creata in afara ei. , Dar daca se sterg caracerelr '77' de la 'trace(in?&r!;' afiseaza eroare deoarece &ariabila 'in?&r' nu exista in afara functiei.

6. 1unctii recursi&e
1unctiile recursi&e sunt functii care se auto,apeleaza singure in interiorul propriului cod. 2 metoda buna de a demonstra capacitatea recursi&a a functiilor este rezol&area unei ecuatii factoriale, care e produsul numerelor naturale, poziti&e, de la < pana la un anumit numar precizat (<K)K-K=K...Kn!. 1n exemplul urmator a&em o functie recursi&a 'factorial(!' care afla factorialul unui numar precizat 'n' (aici L!.
// %e de(ineste o (unctie recursiva (unction (actorial(n:uint):uint 5 // 7aca nE&, inmulteste <n< cu auto,apelarea (unctiei i((n E &) 5 return (n : (actorial(n,/)); 9 else 5 return /; 9 // )eturneaza direct / cand <n< nu e mai mare ca & 9 // %e adau"a /apeleaza (unctia intr,o variabila; var (act:uint = (actorial('); trace((act); // !(iseaza in Dutput valoarea lui "(act" (>&=.&)

, Functia &erifica intai daca 'n' este mai mare decat *, apoi in caz afirmati&, 'n' se inmulteste cu rezultatul returnat de auto,apelarea functiei cu argumentul 'n,<'. Astfel, inainte de a returna &reo &aloare, functia s,a auto,apelat iar, dar cu argumentul mai mic (n,<!, si tot asa, pana cand 'n' a unge *, aparitia cea mai imbricata a functiei se incheie. Flash incheie fiecare functie imbricata pana ce a unge la apelarea initiala a functiei 'factorial', apoi intoarce rezultatul final. , 1n 2utput &a afisa &aloarea =*-)* (<K)K-K=K>K+KNKL! , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. ). -. =. >. Functii cu parametru fix Functii cu 'rest parameters' Functii in &ariabile Functii si &ariabile Functii recursi&e

*biectul String - Siruri


.ermenul de sir (string! desemneaza orice cu&ant, text, fraze, sau un singur caracter, puse intre ghilimele (simple sau duble!. Sirurile pot contine numere, caractere speciale, spatii; in general orice caracter de la tastatura. ActionScript - contine proprietati si metode (functii! speciale pentru lucru cu siruri, prin care se pot face diferite operatii de manipulare a sirurilor, cautare in ele, con&ersie. Dupa cum totul in ActionScript - e &azut ca obiect, inclusi& sirurile, cand este definit un text, de ex.6 'Site www.marplo.net', se creaza o instanta la clasa String.

>. R+ilimele si sec&ente escape


2 &ariabila care stocheaza in ea date de tip String (sir! se poate defini cu oricare din urmatoarele forme6 &ar nume@&ar'String 8 DsirulD9 &ar nume@&ar'String 8 new String3DSirulD79 &ar nume@&ar'String 8 String3DSirulD79 , Thilimelele (pot fi simple sau duble! indica faptul ca textul din ele trebuie interpretat ca tip String (sir!. , De obicei se folosesc ghilimele duble, dar la fel e de preferat si simple, mai ales cand in textul respecti& sunt adaugate ghilimele duble ca parte din text. Si in&ers, daca textul respecti& contine ghilimele simple, e de preferat sa fie incadrat intre ghilimele duble. De exemplu6 &ar sir<6String J '.utoriale PFlashP www.marplo.net'; &ar sir)6String J P.utoriale 'Flash' www.marplo.netP; B Ca reguli generale6 , .ipul de ghilimele care incepe sirul trebuie sa fie folosit si la sfarsitul lui. , Daca in text sunt ghilimele de acelasi tip cu cele folosite la inceputul si sfarsitul sirului, cele din text trebuie precedate de caracterul bac#slash (U! 'escape'. Astfel programul recunoaste ca acele ghilimele sunt parte din text si nu pt. sintaxa de creare a sirului. De exemplu6 &ar sir<6String J '.utoriale U'FlashU' www.marplo.net'; &ar sir)6String J P.utoriale UPFlashUP www.marplo.netP; B Sec&entele escape sunt grupuri de caractere formate din bac#slash si alt caracter, care astfel unite indeplinesc un rol special. Sec&entele escape folosite sunt6

Sb , caracter bac#space S2 , a&anseaza o pagina (rar folosit! Sn , linie noua. Adauga un rand nou Sr , la fel ca PUnP, adauga un rand nou, dar aduce cursoru inapoi la inceputul liniei St , caracter .ab Sunnnn , adauga un caracter ce are un cod Cnicode format din = numere hexadecimal. De ex., codul 'Uu*)NL' adauga caracterul PP S$nn , adauga un caracter format din ) numere hexadecimal, codul ASC11. De ex., codul '7x)>' adauga caracterul PMP SA , ghilimele simple (P! SD , ghilimele duble ('! SS , bac#slash (U!

, Cnirea mai multor siruri intr,un singur sir se face cu caracterul P(P $xemplu6
var sir/:%trin" = < Qocuri <; var sir.:%trin" = <!nime<; var sir=:%trin" = <#ursuri<@ sir/@ sir.; trace(sir=); // #ursuri Qocuri !nime

F. "roprietati si )etode obiect String


*biectul String are o singura proprietate, si anume lengt+. Aceasta returneaza numarul de caractere din sir. $xemplu6

var sir)String - .;n sir.( trace&sir.lengt$'( ,, A

5etode ale obiectului String sunt6

c+arAt3nr7 , 4eturneaza caracterul din sir care are indexul de ordine specificat la PnrP (primul are index *!. o var sir)String - .;n sir.( trace&sir.c$arAt&5''( ,, s c+arCodeAt3nr7 , Codul numeric Cnicode al caracterului cu numarul de ordine (index! PnrP (primul caracter are index *!. o var sir)String - .;n sir.( trace&sir.c$arCodeAt&5''( ,, 11E concat3Asir>A5 AsirFA5 ...7 , Adauga argumentele Psir<P, Psir)P, ... sub forma de sir la sfarsitul sirului. o var sir)String - ./est .( trace&sir.concat&7sir17, 7 sir27''( ,, /est sir1 sir2 2romC+arCode3cod>5 codF7 , 4eturneaza un sir compus din caracterele echi&alente codurilor Cnicode Pcod<P, Pcod)P, .... o trace&String."romC$arCode&11E, 119''( ,, sv inde$*23Asub@sirA5 nr7 , 4eturneaza prima pozitie a lui Psub?sirP intr,un sir, incepand cautarea de la index PnrP (PnrP e optional, daca nu e adaugat, se considera *!. Daca Psub?sirP ne se afla in sirul la care e aplicata, returneaza ,<. o var sir)String - ./utoriale.( trace&sir.inde!O"&7tor7''( ,, 2 lastInde$*23Asub@sirA5 nr7 , Similar cu 'index2f(!', dar face cautarea de la dreapta la stanga. 4eturneaza ultima pozitie a lui Psub?sirP intr,un sir, incepand cautarea, spre stanga, de la index PnrP (PnrP e optional, daca nu e augat, cautarea incepe de la ultimul caracter!. o var sir)String - ./utoriale, cursuri online.( trace&sir.last>nde!O"&7ri7''( ,, 1A matc+3AsablonA7 , 4eturneaza un Arra0 cu toate partile din sir care se potri&esc sablonului specificat la 'sablon', acesta poate fi un sir, o expresie regulata 4eg$xp sau un obiect (care &a fi con&ertit in sir!. o var sir)String - ./utoriale, tutor, cursuri.( var e!p)6eg !p - ,tuFa-+G0,gi( trace&sir.matc$&e!p''( ,, /utoriale,tutor replace3AsablonA5 AreplA7 , 1nlocuieste 'sablon' (sir, 4eg$xp! gasit in sir cu 'repl'.

var sir)String - ./utoriale, tutor, cursuri.( var e!p)6eg !p - ,tuFa-+G0,gi( trace&sir.replace&e!p, 7Hectii7''( ,, Hectii, Hectii, cursuri searc+3AsablonA7 , 4eturneaza prima pozitie a lui 'sablon' (sir, 4eg$xp! gasita in sir. Daca 'sablon' nu e gasit, returneaza ,<. o var sir)String - ./utoriale, tutor, cursuri.( var e!p)6eg !p - ,rFisG,i( trace&sir.searc$&e!p''( ,, @ slice3startInde$5 endInde$7 , 4eturneaza sub,sirul care incepe de la caracterul cu index 'start1ndex' (inclusi&! pana la caracterul cu index 'end1ndex' (fara el!. Similara e si functia substring3startInde$5 endInde$7. Diferenta e ca 'slice(!' poate folosi si &alori negati&e, dar 'substring(!' nu. o var sir)String - .Curs gratuit online.( trace&sir.slice&E, 12''( ,, gratuit split3AsepA7 , .ransforma sirul in Arra0, cu elemente obtinute din sub,sirurile delimitate de 'sep'. o var sir)String - .Curs-gratuit-online.( trace&sir.split&7-7''( ,, Curs,gratuit,online substr3startInde$5 lun7 , 2btine sub,sirul care incepe de la caracterul cu idex Pstart1ndexP pana la lungimea data la PlunP. o var sir)String - .$ttp),,www.marplo.net.( trace&sir.substr&11, A''( ,, marplo toLowerCase37 , 4eturneaza o copie a sirului, cu toate caracterele mici; fara sa afecteze sirul original. o var sir)String - ./utoriale, Cursuri OIH>I .( trace&sir.toHowerCase&''( ,, tutoriale, cursuri online toGpperCase37 , 4eturneaza o copie a sirului, cu toate caracterele mari (ma uscule!; fara sa afecteze sirul original. o var sir)String - ./utoriale, Cursuri OIH>I .( trace&sir.to;pperCase&''( ,, /;/O6>AH , C;6S;6> OIH>I toString37 , .ransforma in sir obiectul la care e aplicata. o var nr)int - C( var sir)String - 797( trace&nr.toString&'0 sir'( ,, C9 &sau String&nr'0 sir ' Number3AsirA7 , .ransforma 'sir' in 3umar. o var nr)int - C( var sir)String - 797( trace&nr0 Iumber&sir''( ,, 1E
o

*biect Number si )at+ - Numere


Numerele sunt orice numar care nu e adaugat intre ghilimele (daca e scris intre g$ilimele, e considerat String &sir'!. Numerele pot fi de mai multe feluri6 , "oziti&e ( L, <<, <).> !

, 3egati&e ( ,L, ,<<, ,<).> ! , 1ntregi ( ,=*, ,), =, NL ! , Denumite 'integer' , Cu &irgula, sau fractionare ( ,=.>, N.L ! , Denumite 'float'. >n programare se "oloseste punctul &.' intre partea intreaga si +ecimale. , ;exazecimale ( *xNdL reprezinta numarul )**L ! , $xponentiale , Folosite pt. &alori numerice mari (N.Le(L J NL* *** ***, adica <.Lx<*L!. B Ca si celelalte elemente de baza in ActionScript (siruri, Arra0!, si numerele sunt considerate obiecte, deoarece au metode proprii pentru lucru cu ele. 2 &ariabila care stocheaza numere se poate defini cu oricare din urmatoarele forme6 &ar nume@&ar'Tipnr 8 nr9 &ar nume@&ar'Tipnr 8 new Number3nr79 &ar nume@&ar'Tipnr 8 String3nr79 , nr este numarul adaugat in &ariabila 'nume?&ar'. , Tipnr reprezinta tipul de numere care sunt stocate in &ariabila, poate fi de - feluri6

Number , pentru orice tip de numere, intregi, cu zecimale, hexazecimale sau exponentiale. int , pt. numere intregi (fara zecimale, poziti&e sau negati&e!. uint , pt. numere intregi poziti&e (fara zecimale, mai mari decat *!.

, #e obicei se "oloseste prima varianta. B Daca &ariabilei de tip '3umber' nu i,se atribuie o &aloare (un numar!, ci este doar simplu declarata (&ar nume@&ar'Number9!, &aloarea &a fi cea 'defaul' folosita in AS-6 NaN (Iot a Iumber!. Dar i,se poate atribui dupa ce a fost declarata. "entru a &erifica daca o &ariabila are &aloarea 3a3 se foloseste metoda 'isNaN3nume@&ar7' (aceasta returneazaa true daca e 3a3, sau 2alse!. $xemplu6
var nr:;umber; trace(nr); trace(is;a;(nr)); nr = F'; trace(nr); // ;a; // true // F'

Cum pt. tipul Number &aloarea default este NaN , pentru tipurile int si uint &aloarea default este *. , '&ar nr63umber J .nr' si '&ar nr63umber J 0.nr' reprezinta acelasi numar. , "entru a defini o culoarea in ActionScript - se foloseste expresia 0$11,,RR-- @F , Alpha (transparenta!, 4 , 4ed (rosu!, T , Treen (&erde!, 8 , 8lue (albastru!A, aceasta e un '-),bit integer' si poate fi stocat in tipul 'uint'. $x. &ar culoare6uint J *xafeLedfe;

>. )etode si Constante obiect Number

*biectul Number nu are proprietati specifice, are cate&a metode (functii! si constante. 2peratiile cu numere se fac cu operatorii aritmetici si rationali (vedeti lectia Constante si Operatori! si cu obiectul 5ath (e pre+entat mai jos!. - )etode obiect Number

to/$ponential3Qe7 , 4eturneaza un sir cu numarul in notatie exponentiala. 'ze' indica numarul de zecimale afisate in notatia exponentiala returnata o var nr)Iumber - 125@EAC9=( trace&nr.to !ponential&2''( ,, 1.25e09 to1i$ed3Qe7 , 4eturneaza un sir cu numarul fixat la cate zecimale indica 'ze'. o var nr)Iumber - 12.5@EAC9=( trace&nr.to*i!ed&5''( ,, 12.5@A to"recision3Qe7 , 4eturneaza un sir cu numarul in notatia exponentiala sau normala. 'ze' reprezinta numarul total de intregi si zecimale. o var nr1)Iumber - 12.5@EAC9=( trace&nr1.toPrecision&@''( ,, 12.5E var nr2)Iumber - 125@00000( trace&nr2.toPrecision&@''( ,, 1.25@e09 toString37 , .ransforma numarul in sir. o var nr)int - C( var sir)String - 797( trace&nr.toString&'0 sir'( ,, C9 &sau String&nr'0 sir ' Number3AsirA7 , .ransforma 'sir' in 3umar. o var nr)int - C( var sir)String - 797( trace&nr0 Iumber&sir''( ,, 1E

- Constante obiect Number

)AT@=ALG/ , 3umarul cel mai mare care poate fi folosit. o trace&int.MAJ4KAH; '( ,, 21@C@95A@C trace&uint.MAJ4KAH; '( ,, @2=@=AC2=E trace&Iumber.MAJ4KAH; '( ,, 1.C=CA=515@9A251e0509 )IN@=ALG/ , 3umarul cel mai mic care poate fi folosit. o trace&int.M>I4KAH; '( ,, -21@C@95A@9 trace&uint.M>I4KAH; '( ,, 0 trace&Iumber.M>I4KAH; '( ,, @.=@0AEA@E9@12@AE@e-52@ N/RATI=/@IN1INITU , 4eprezinta 1nfinitul 3egati& si cu ea se pot &erifica &alorile '-In2init ' (rezultate de exemplu in urma impartirii la *!. o var nr)Iumber - -C,0( trace&'( ,, ->n"initD trace&nr -- Iumber.I LA/>K 4>I*>I>/M'( ,, true

"*SITI=/@IN1INITU , 4eprezinta 1nfinitul "oziti& si cu ea se pot &erifica &alorile 'In2init ' (rezultate de exemplu in urma impartirii la *!. o var nr)Iumber - 9,0( trace&'( ,, >n"initD trace&nr -- Iumber.POS>/>K 4>I*>I>/M'( ,, true

F. *biectul )at+
*biectul )at+ (sau clasa Mat$! contine metode si constante prin care se pot efectua operatii matematice mai a&ansate, cum ar fi6 ridicarea la putere, obtinerea unui numar aleator, logaritmi, sau trigonometrice (cu sinus, cosinus, etc.!. B Sintaxa generala pentru folosirea metodelor )at+ este6 )at+.metoda3parametru7 $xemple6
var nr:;umber = 4at$ pow(=, >); trace(nr); var nr.:;umber = 4at$ random(); trace(nr.); // )idica = la puterea > // '/ // & =./FF=F=6'&R=>6J>

- )etode obiect )at+ pt. operatii aritmetice


pow3a5 b7 , 4eturneaza &aloarea lui PaP ridicat la puterea PbP. e$p3nr7 , 4eturneaza PeP la puterea PnrP (e J ).N<L)L<L)L @valoarea ba+ei logaritmului naturalA!. 2loor3nr7 , 4eturneaza &aloarea rotun ita a lui PnrP la anteriorul (mai mic! intreg. ceil3nr7 , 9aloarea rotun ita a lui PnrP la urmatorul (mai mare! intreg. round3nr7 , 9aloarea rotun ita a lui numar la intregul cel mai apropiat. ma$3a5 b5 c5 ...7 , Cel mai mare numar dintre cele date la parametri. min3a5 b5 c5 ...7 , Cel mai mic numar dintre cele date la parametri. sVrt3nr7 , 4adical din PnrP. abs3nr7 , 9aloarea absoluta (cu (! a lui PnrP. log3nr7 , 4eturneaza logaritmul natural al lui PnrP. random37 , Cn numar aleator intre * si < (poate fi *, dar nu si <!.

- )etode obiect )at+ pt. operatii trigonometrice


sin3rad7 , Sinusul unghiului specificat la PranP, in radiani. cos3rad7 , Cosinusul unghiului specificat la PranP, in radiani. tan3rad7 , .angenta unghiului specificat la PranP, in radiani. asin3rad7 , 4eturneaza arcsinus,ul, unghiul in radiani, a numarului PranP (in radiani!. acos3rad7 , 4eturneaza arccosinus,ul, unghiul in radiani, a numarului PranP (in radiani!. atan3rad7 , 4eturneaza arctangenta, unghiul in radiani, a numarului PranP (in radiani!.

atanF3 5 $7 , 4eturneaza unghiul in radiani, trasat din origine la punctul de intersectie 07x.

, "entru a afla &aloarea in radiani, cand se cunosc gradele, se foloseste urmatoarea formula6 &al@radiani 8 &al@grade ? )at+."I#>409 $xemplu6
var "rade:;umber = >6; var radiani:;umber = "rade : 4at$ CI//'&; trace(radiani); // & F'6=J'/R==JF>>'=

, "entru a afla gradele, cand se cunosc radianii, se foloseste urmatoarea formula6 &al@grade 8 &al@radiani ? >40#)at+."I9 $xemplu6
var radiani:;umber = & F'6>; var "rade:;umber = radiani : /'&/4at$ CI; trace("rade); // >6

B Constantele sunt un numar fix. Sintaxa generala pentru folosirea constantelor )at+ este6 )at+.C*NSTANTA $xemple6
trace(4at$ CI); trace(4at$ 3); // = />/6J.R6=6'JFJ= // . F/'.'/'.'>6J&6

- Constante )at+

/ , 9aloarea bazei logaritmului natural ( ).N<L)L<L)L=>D*> !. LN>0 , /ogaritm natural din <* ( ).-*)>L>*D)DD=*=+ !. LNF , /ogaritm natural din ) ( *.+D-<=N<L*>>DD=>- !. L*R>0/ , /ogaritm in baza <* din $ ( *.=-=)D==L<D*-)><L !. L*RF/ , /ogaritm in baza ) din $ ( <.==)+D>*=*LLLD+--LN !. "I , Constanta matematica "1, pentru cerc ( -.<=<>D)+>->LDND- !. SW,T>@F , 4adical din <7) @*.>A ( *.N*N<*+NL<<L+>=N+ !. SW,TF , 4adical din ) ( <.=<=)<->+)-N-*D>< !.

0ata si Timp - *biect 0ate


"entru a lucra cu data zilei si perioade de timp in ActionScript - se foloseste obiectul (sau clasa! 0ate. Ca si la celelalte tipuri de clase, pentru a folosi obiectul Date trebuie creata o instanta a lui (cu operatorul new!, dupa care pot fi utilizate proprietatile si metodele clasei Date la acea instanta. Sintaxa generala de creare a unei instante Date este6 &ar nume@ins'0ate 8 new 0ate379 , Cu aceasta formula se memoreaza data curenta intr,o &ariabila 'nume?ins', dupa cum se obser&a in rezultatul returnat de 'trace(!' din exemplul urmator.

var dat:7ate = new 7ate(); trace(dat); // Tue ;ov J &J:6=:6J *4T@&.&& .&/&

B Data reprezinta orice punct in timp. Se pot aplica la crearea instantei Date o serie de &alori ca parametri6 An, /una, Vi a lunii, 2ra, 5inut, Secunda si 5ilisecunde; pentru a utiliza o anumita data din timp. Sintaxa generala este6 &ar nume@ins'0ate 8 new 0ate3an5 luna5 Qi5 ora5 minut5 secunda5 milisecunde79 , .rebuie inclusi cel putin ) parametri, cel putin Anul si /una (ceilalti &or a&ea &aloarea implicita *! , "rima luna din an (1anuarie! are &aloarea *, iar ultima luna (Decembrie! are &aloarea <<. 2rele sunt de la * la )- ()= e ora *!. #ata 0 e considerata data ;ni! &cand a aparut' 1->anuarie-1=C0. $xemplu6
var dat:7ate = new 7ate(.&/&, &, /6); trace(dat); // Fri Qan /6 &&:&&:&& *4T@&.&& .&/& var dat.:7ate = new 7ate(.&/&, //, /6, /', .., =., ''); trace(dat.); // 0ed 7ec /6 /':..:=. *4T@&.&& .&/&

B Cn alt mod de a prelua un anumit moment din timp este adaugarea la parametru a unui sir reprezentand acea data, dupa cum e in exemplele de mai os. Sirul trebuie sa contina cel putin Anul, /una si Viua.
var dat/:7ate = new 7ate(<///6/.&/&<); // 1una/Si/!n trace(dat/); // Fri Qan /6 &&:&&:&& *4T@&.&& .&/& var dat.:7ate = new 7ate(<%un Qan .' .&&F<); trace(dat.); // %un Qan .' &&:&&:&& *4T@&.&& .&&F var dat=:7ate = new 7ate(</6 Dct /JFR<); trace(dat=); // Fri Dct /6 &&:&&:&& *4T@&=&& /JFR var dat>:7ate = new 7ate(<%un Qan .' .&&F />:/R:/.<); trace(dat>); // %un Qan .' /6:/R:/. *4T@&.&& .&&F

, #aca sirul adaugat nu poate "i recunoscut si trans"erat ca data, obiectul #ate va returna 0a0 B "entru a &erifica daca o data este &alida se poate folosi formula6 isNaN3nume@ins.&alue*2377 , Aceasta &erifica daca &aloarea lui 'nume?ins' e un numar. 4eturneaza true daca 3C e numar, altfel, 2alse. $xemplu6
var dat:7ate = new 7ate(<Ieri<); trace(dat); // Invalid 7ate trace(is;a;(dat valueD(())); // true

Vona de timp folosita poate fi timpul local, apare ca T5.; sau .impul Cni&ersal, abre&iat C.C (este timpul ci&il al meridianului *, determinat prin masurare astronomica!.

"roprietati si metode obiect 0ate

Dupa ce a fost creata o Instanta 0ate, se pot accesa si modifica datele din ea folosind proprietatile si metodele obiectului. De exemplu, daca se doreste obtinerea orei si numarul zilei curente (care e de la < la -<! se pot utiliza instructiunile ca in urmatorul exemplu6
// %eteaza o instanta la obiectul 7ate // in care va (i stocata data si timpul curent var dat:7ate = new 7ate(); // Creia ziua var ziua:int = dat date; // Creia ora var ora:int = dat "etTours(); // !(isaza in Dutput ziua si ora trace(ziua); // J trace(ora); // // // sau dat.getDate(); // sau dat.hours;

, 5odificarea unei date, a anumitor parti din ea (an, luna, ora, ...!, se face dupa cum puteti &edea in acest exemplu6
// %eteaza o instanta la obiectul 7ate // va stoca data si timpul din ziua de: 7uminica, .',Ianuarie,.&&F, ora />:/R:/. var dat:7ate = new 7ate(<%un Qan .' .&&F />:/R:/.<); // %eteaza o noua valoare pt zi dat date = //; // sau dat.setDate(11); // %eteaza o noua valoare pt ora dat setTours('); // sau dat.hours = 8; // Aeri(ica in Dutput data obtinuta trace(dat); // T$u Qan // &':/R:/. *4T@&.&& .&&F

, S,a modificat numarul zilei la &aloarea << (initial )L! si al orei L (initial <=!. 1mplicit a modificat si ziua din saptamana (&edeti in rezultatul dat de 'trace'!. , 2bser&ati cum sunt aplicate proprietatile si metodele obiectului. "roprietati obiect 0ate

date , ziua din luna (intre < si -<! dateGTC , ziua din luna (intre < si -<!, in acord cu timpul uni&ersal (C.C! da , numarul zilei din saptamana (* pt. Duminica, < pt. /uni, ...! da GTC , numarul zilei din saptamana (* pt. Duminica, < pt. /uni, ...!, in acord cu timpul uni&ersal (C.C! 2ullUear , anul intreg (format din = caractere! 2ullUearGTC , anul intreg (format din = caractere!, in acord cu timpul uni&ersal +ours , ora (un numar intre * si )-! +oursGTC , ora (un numar intre * si )-!, timp C.C milliseconds , milisecunde (un numar intre * si DDD! millisecondsGTC , milisecunde (un numar intre * si DDD!, in acord cu timpul uni&ersal

minutes , minute (un numar intre * si >D! minutesGTC , minute (un numar intre * si >D!, in acord cu timpul uni&ersal mont+ , numarul lunii din an (* pt. 1anuarie, < pt. Februarie, ..., << pt. Decembrie! mont+GTC , numarul lunii din an (* pt. 1anuarie, < pt. Februarie, ..., << pt. Decembrie!, timp C.C seconds , secunde (un numar intre * si >D! secondsGTC , secunde (un numar intre * si >D!, in acord cu timpul uni&ersal time , numarul de milisecunde de la <,1anuarie,<DN* timeQone*22set , diferenta in minute dintre timpul uni&ersal (C.C! si timpul local (al calculatorului unde ruleaza prezentarea!

)etode obiect 0ate


get0ate37 , returneaza numarul zilei din luna (un numar intre < si -<! get0a 37 , returneaza numarul zilei din saptamana (* pt. Duminica, < pt. /uni, ...! get1ullUear37 , returneaza anul intreg (format din = caractere! get(ours37 , obtine ora (un numar intre * si )-! get)illiseconds37 , obtine milisecundele (un numar intre * si DDD! get)inutes37 , obtine minutele (un numar intre * si >D! get)ont+37 , returneaza numarul lunii din an (* pt. 1anuarie, < pt. Februarie, ..., << pt. Decembrie! getSeconds37 , returneaza secundele (un numar intre * si >D! getTime37 , obtine numarul de milisecunde de la <,1anuarie,<DN* getTimeQone*22set37 , obtine diferenta in minute dintre timpul uni&ersal (C.C! si timpul local (al calculatorului unde ruleaza prezentarea! getGTC0ate37 , returneaza numarul zilei din luna (un numar intre < si -<!, in acord cu timpul uni&ersal getGTC0a 37 , returneaza numarul zilei din saptamana (* pt. Duminica, < pt. /uni, ...!, in acord cu timpul uni&ersal getGTC1ullUear37 , returneaza anul intreg (format din = caractere!, in acord cu timpul uni&ersal getGTC(ours37 , obtine ora (un numar intre * si )-!, dupa timpul uni&ersal getGTC)illiseconds37 , obtine milisecundele (un numar intre * si DDD!, dupa timpul uni&ersal getGTC)inutes37 , obtine minutele (un numar intre * si >D!, dupa timpul uni&ersal getGTC)ont+37 , returneaza numarul lunii din an (* pt. 1anuarie, < pt. Februarie, ..., << pt. Decembrie!, timp C.C getGTCSeconds37 , returneaza secundele (un numar intre * si >D!, dupa timpul uni&ersal parse3AdataA7 , con&erteste sirul de la PdataP intrun numar ce reprezinta milisecundele trecute de la <,1anuarie,<DN* pana la acea data set0ate3nr@Qi7 , seteaza numarul zilei (intre < si -<! si returneaza noul timp in milisecunde set1ullUear3an5 luna5 Qi7 , seteaza anul, luna si ziua, daca sunt mentionate (acestea fiind optionale! si returneaza noul timp in milisecunde

set(ours3ore5 minute5 secunde5 milisecunde7 , defineste ora (ultimii - parametri sunt optionali!, returneaza noul timp in milisecunde set)illiseconds3ms7 , seteaza milisecundele cu &aloarea de la PmsP (un nr. intre * si DDD! si returneaza noul timp in milisecunde set)inutes3minute5 secunde5 milisecunde7 , seteaza minutul (ultimii ) parametri sunt optionali! si returneaza noul timp in milisecunde set)ont+3luna5 Qiua7 , seteaza luna (PziuaP e optional! si returneaza noul timp in milisecunde setSeconds3secunde5 milisecunde7 , defineste secundele (PmilisecundeP e optional! si returneaza noul timp in milisecunde setTime3ms7 , seteaza data in milisecunde, de la <,1anuarie,<DN*, cu cea specificata la PmsP setGTC0ate3nr@Qi7 , seteaza numarul zilei, la zona de timp C.C (intre < si -<! si returneaza noul timp in milisecunde (timpul C.C! setGTC1ullUear3an5 luna5 Qi7 , seteaza anul, luna si ziua (la zona de timp C.C!, daca sunt mentionate (acestea fiind optionale! si returneaza noul timp in milisecunde setGTC(ours3ore5 minute5 secunde5 milisecunde7 , defineste ora, la zona de timp C.C (ultimii - parametri sunt optionali!, returneaza noul timp in milisecunde setGTC)illiseconds3ms7 , seteaza milisecundele, la timpul C.C, cu &aloarea de la PmsP (un nr. intre * si DDD! si returneaza noul timp in milisecunde setGTC)inutes3minute5 secunde5 milisecunde7 , seteaza minutul, la timpul C.C (ultimii ) parametri sunt optionali! si returneaza noul timp in milisecunde setGTC)ont+3luna5 Qiua7 , seteaza luna, la zona de timp C.C (PziuaP e optional! si returneaza noul timp in milisecunde setGTCSeconds3secunde5 milisecunde7 , defineste secundele, timp C.C (PmilisecundeP e optional! si returneaza noul timp in milisecunde to0ateString37 , returneaza un sir reprezentand ziua si data, fara ora si zona de timp toLocale0ateString37 , la fel ca si 'toDateString(!' toLocaleString37 , returneaza un sir cu data si timpul zilei (ora cu A5, "5!, fara zona de timp toLocaleTimeString37 , returneaza un sir cu timpul zilei (ora cu A5, "5!, fara data zilei, an sau zona de timp toString37 , returneaza un sir cu ziua, data, ora si zona de timp toTimeString37 , returneaza un sir cu ora si zona de timp, fara ziua si data toGTCString37 , returneaza un sir cu ziua, data si ora C.C

$xpresia 2las+.utils.getTimer37 returneaza numarul de milisecunde de cand Flash "la0er,ul e pornit.

Arra
Arra (denumit si matrice! poate fi considerat si obiect si &ariabila. Se foloseste pentru a stoca mai multe &alori ordonate intr,un singur nume de &ariabila. "e scurt 'o lista de valori'. Fiecare &aloare stocata de&ine un element al matricei, si are asociat un 'numar index' (indice sau

cheie!. Cu a utorul acestei chei se poate face referire la oricare element din Arra0. 1n ActionScript sunt folosite ) moduri de a crea Arra06 B <. Cu &alorile intre o pereche de paranteze patrate @A (gen NSOI! &ar numeAr'Arra 8 C&al>5 &alF5 ...E9 B ). Cu operatorul new ; &ar numeAr'Arra 8 new Arra 3&al>5 &alF5 ...79 , /a ambele metode, 'numeAr' este numele Arra0,ului (prin care se poate lucra cu elementele lui!, iar '&al<, &al), ...' sunt &alorile adaugate si stocate in 'numeAr'. Aceste &alori (elemente! pot fi de orice tip6 &ariabile, siruri, numere sau chiar alte matrici; separate prin &irgula (,!. De exemplu6 &ar mAr'Arra 8 CAun sirA5 o@&ariabila5 B.65 44E9 sau &ar mAr'Arra 8 new Arra 3Aun sirA5 o@&ariabila5 B.65 4479 "entru a crea un Arra0 gol, fara &reun element, se poate folosi una din expresiile6 &ar mAr'Arra 8 CE9 sau &ar mAr'Arra 8 new Arra 379

>. GtiliQare elemente din Arra


Dupa ce a fost creat un Arra0, scopul lui este sa fie accesate elementele din el. , $lementele adaugate in Arra0 sunt retinute in ordine numerica, incepand de la indice (index sau cheie! *. Astfel, primul element are indice *, al doilea <, si tot asa. "entru a accesa oricare element din matrice, se scrie numele ei si indicele intre paranteze patrate, numeArCinde$E De exemplu6
var m!r:!rra- = M<site<, <www marplo net<, F'N; trace(m!rM/N); // !(iseaza in Dutput: www.marplo.net

, "entru a folosi primul element, se pune indice *, trace(m2r304); &a returna 'site'. $lementele din Arra0 astfel accesate (cu 'numeAr@indexA'!, pot fi utilizate ca o &ariabila, in operatii sau alte &ariabile; iar ca &aloare pentru 'index' se poate folosi si o &ariabila. Studiati urmatorul exemplu6
var m!r:!rra- = M<site<, <www marplo net<, F'N; // %e creaza o variabila "i" care va (i (olosita pt var i:uint = .; indice

// %e creaza o variabila a carei valoare va (i un numar adunat cu // elementul din !rra-,ul "m!r", cu index "i" (aici .) var test = > @ m!rMiN; trace(test); // Aeri(ica valoarea lui "test", in Dutput: 82

, 'i' a&and &aloarea ), 'mAr@iA' &a returna al treilea element din matricea 'mAr' (NL!, iar &ariabila '&ar test J = ( mAr@iA;' &a a&ea &aloarea (L) , '=(NL'! care e afisata in 2utput.

F. )odi2icare5 adaugare elemente in Arra

"e langa accesarea elementelor dintr,un Arra0, acestea pot fi si modificate (&aloarea lor! sau adaugate altele la cele existente. "rocedeul este asemanator ca la &ariabile, se precizeaza elementul respecti& (numele matricei si intre paranteze patrate indicile de ordine a lui! si cu semnul egal i,se atribue o &aloare. Studiati urmatorul exemplu6
var m!r:!rra- = M<site<, <www marplo net<, F'N; // %e modi(ica valoarea primului element m!rM&N = <tutoriale<; // %e veri(ica cu "trace(m!r)" valorile din !rratrace(m!r); // site,www marplo net,F' // %e adau"a un nou element in "m!r" (al patrulea, inice =) m!rM=N = <!ction%cript<; // %e veri(ica iar cu "trace(m!r)" valorile din !rratrace(m!r); // site,www marplo net,F',!ction%cript

#aca se aplica .trace&'. la un ArraD, va a"isa in Output valoarea tuturor elementelor din acel ArraD. , Acest script &a afisa in 2utput6 tutoriale,www.marplo.net,NL tutoriale,www.marplo.net,NL,ActionScript , 2bser&ati diferenta fata de &alorile initiale. 9aloarea primului element, 'site' a de&enit 'tutoriale', apoi s,a adaugat inca un element 'ActionScript'. Despre cum se sterg elemente dintr,un Arra0, &edeti pagina Arra0 , /ucru cu Functii.

3. Numar elemente din Arra


1n lucrul cu Arra0 este necesara cunoasterea si a numarului de elemente din el. Acesta se poate afla cu proprietatea lengt+, folosind sintaxa6 numeAr.lengt+ , Daca la un Arra0 care are de exemplu - elemente (cu indici *, <, )! se adauga inca un element, dar cu indice mai mare decat cel urmator, de exemplu index >; acel Arra0 &a a&ea + elemente. 1n locul indicilor lipsa pana la cel adaugat (- si =! &a crea automat elemente goale. Studiati urmatorul exemplu6
var m!r:!rra- = M<site<, <www marplo net<, F'N; // %e adau"a intr,o variabila numarul de elemente din "m!r" var nrBel = m!r len"t$; // %e veri(ica cu "trace(nrBel)" numarul de elemente trace(nrBel); // = // %e adau"a un nou element in "m!r" (cu inice 6) m!rM6N = <!ction%cript<; // %e actualizeaza numarul de elemente din "m!r" in "nrBel" si se veri(ica iar cu "trace(nrBel)"

nrBel = m!r len"t$; trace(nrBel);

// R

// %e veri(ica si elementele continute in "m!r" trace(m!r); // site,www marplo net,F',,,!ction%cript

, 2bser&ati ca, desi Arra0,ul 'mAr' are la inceput - elemente si se mai adauga doar unul 'ActionScript', expresia 'mAr.height' returneaza + elemente deoarece ultimul a fost adaugat cu inde > si astfel sunt completate cu elemente goale cele lipsa (cu indicii6 - si =!, dupa cum se &ede in rezultatul afisat de al treilea 'trace(mAr!'. , 1n 2utput afiseaza6 + site,www.marplo.net,NL,,,ActionScript "roprietatea 'lengt+' poate fi utilizata si pentru a seta unui Arra0 un anumit numar de elemente, adaugad elemente goale (fara &aloare!. De exemplu6 &ar mAr'Arra 8 CAsiteA5 Awww.marplo.netA5 B4E9 mAr.lengt+ 8 >09 , 9a face ca 'mAr' sa aibe <* elemente, ultimile N goale. , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. Ctilizare elemente din Arra0 ). 5odificare, adaugare elemente -. Arra0 , numar elemente

Arra - A&ansati
1n aceasta lectie &or fi prezentate metode mai a&ansate de lucru cu Arra .

>. "arcurgere Arra


"entru a parcurge un Arra0 se folosesc oricare din instructiunile repetiti&e6 2or5 w+ile sau 2or eac+ ... in (vedeti lectiile despre >nstructiuni 6epetitive!. "arcurgerea unui Arra0 da posibilitatea aplicarii unei actiuni fiecarui element din el. , 1ata cate un exemplu cu fiecare. Cu 2or37
var m!r:!rra- = M., R, 'N; // %e parcur"e !rra- "m!r" cu "(or()" (or(var i:int=&; iLm!r len"t$; i@@) 5 // %e dubleaza valoarea elementului curent

m!rMiN := .;

// Aeri(icare valori ale elementelor din "m!r" dupa parcur"ere trace(m!r); // >,/.,/R

, '&ar i6intJ*;' seteaza indicele de la care incepe parcurgerea (se poate da si alta &aloare in afara de *, de la care element sa inceapa!. , 'iFmAr.length;' face ca parcurgerea sa fie realizata pana la ultimul element. , 'i((' incrementeaza indicele cu o unitate, pt. fiecare parcurgere. , 1n cadrul buclei 'for(!' (intre acolade! pot fi scrise orice instructiuni si operatii pt. elementul curent parcurs; acesta putand fi accesat cu indicele de ordine 'i'. Cu w+ile37
var m!r:!rra- = M., R, 'N; var i:int = &; // %e de(ineste indicele de ordine pt parcur"ere // %e parcur"e !rra- "m!r" cu "w$ile()" w$ile(iLm!r len"t$) 5 // %e dubleaza valoarea elementului curent m!rMiN := .; i@@; // Incrementeaza indicele ca sa treaca la urmatorul element 9 // Aeri(icare valori ale elementelor din "m!r" dupa parcur"ere trace(m!r); // >,/.,/R

Cu 2or eac+ ... in


var m!r:!rra- = M., R, 'N; // %e parcur"e !rra- "m!r" cu "(or eac$ in" (or eac$(var elm:;umber in m!r) 5 // %e dubleaza valoarea elementului curent, care e stocat in "elm" elm := .; // Cot (i executate comenzi cu "elm" 9 // Aeri(icare valori ale elementelor din "m!r" dupa parcur"ere trace(m!r); // .,>,'

, 2bser&ati ca, fata de celelalte instructiuni repetiti&e, 'for each ... in' doar preia si foloseste intr, o &ariabila (aici 'elm'! &aloarea elementului curent parcurs din Arra0 (aici 'mAr'!, dar nu influenteaza elementele din matrice. Dupa cum se &ede la &erificarea cu 'trace(mAr!', &alorile din Arra0 sunt neschimbate.

F. Arra multi-dimensional
Cn Arra poate contine ca element un alt Arra0. 1n acest caz a&em de,a face cu o matrice multi, dimensionala. Sa luam un exemplu practic 6

// %e creaza un !rra- cu = elemente (al treile (iind tot un !rra-) var m!r:!rra- = M<tutoriale<, <www marplo net<, M'', <(las$<NN; // Aeri(icare elemente totale din <m!r<, si al treilea trace(m!r); // tutoriale,www marplo net,'',(las$ trace(m!rM.N); // '',(las$

, Al treilea element (@LL, PflashPA! fiind un Arra0 in cel principal, se mai numeste si 'arraD imbricat'. Accesare elemente din Arra -ul imbricat "entru a accesa un element din matricea imbricata se foloseste urmatoarea formula6 numeArCi>ECiFE , Cnde, 'i<' este indicile de ordine a matricei imbricate in Arra0,ul principal, iar 'i)' este indicele elementului din matricea interna. 5ai usor de inteles din urmatorul exemplu6
// %e creaza un !rra- cu = elemente (al treile (iind tot un !rra-) var m!r:!rra- = M<tutoriale<, <www marplo net<, M'', <(las$<NN; // %e adau"a intr,o variabila al doilea element din !rra-,ul imbricat var test:: = m!rM.NM/N; trace(test); // Aeri(icare valoare lui "test" ((las$)

3. Arra asociati&
Cn Arra asociati& este un Arra0 in care indicii elementelor nu sunt numere intregi consecuti&e, ci siruri (cu&inte!. Acestea nu mai sunt create automat, in ordine de catre program, ci trebuie definiti (asociati! special pentru fiecare element. Sintaxa generala este6

&ar numeAr'Arra 8 new Arra 379 numeArCA.e >AE 8 &al>9 numeArCA.e FAE 8 &alF9 ## ...

, Cnde 'numeAr' este numele matricei. , P#e0<P, P#e0)P sunt indicii (cheile! asociate fiecarui element (pot fi scrisi si intre ghilimele duble, iar daca sunt numere, nu mai se adauga ghilimele!. , '&al<', '&al)' sunt &alorile elementelor respecti&e (pot fi6 siruri, numere, &ariabile, expresii sau alt Arra0!. , Se pot adauga oricate elemente in Arra0, cu formula numeArCA.e AE 8 &aloare9 B Accesarea elementelor dintr,un Arra0 asociati& se face la fel ca la cel cu indexi numere consecuti&e (denumit si .secvential.!, cu sintaxa6 numeArCA.e AE B Acest tip de Arra0 (asociati&! este de fapt si *biect, deoarece &alorile elementelor din el pot fi accesate si folosind formula6 'numeAr..e ', aici '#e0' fiind folosita ca o proprietate. 1ata un exemplu in care sunt aplicate ambele metode de accesare6
// !rra- asociativ cu = elemente

var m!r:!rra- = new !rra-(); m!rM<site<N = <www marplo net<; m!rM<curs<N = <!dobe Flas$<; m!rM<tutoriale<N = <Qava%cript<; // !pelare cu metoda tip !rra- a primului element trace(m!rM<site<N); // www marplo net // !pelarea altui element, cu metoda tip Dbiect trace(m!r curs); // !dobe Flas$

Daca se aplica 'trace3arra @asociati&7', fara &reo cheie, nu &a afisa nimic.

N. "arcurgere Arra asociati&


Cn Arra0 asociati& se parcurge cu instructiunile '2or ... in' sau '2or eac+ ... in'. 1ata un exemplu pentru fiecare. - Cu 2or ... in
// !rra- asociativ cu = elemente var m!r:!rra- = new !rra-(); m!rM<site<N = <www marplo net<; m!rM<curs<N = <!dobe Flas$<; m!rM<tutoriale<N = <Qava%cript<; // %e parcur"e matricea "m!r" cu "(or in" (or(var Ge-:%trin" in m!r) 5 // %e a(iseaza in Dutput #$eia si valoarea (iecarui element parcurs trace(<#$eie=<@ Ge-@ < , valoare=<@ m!rMGe-N); // Cot (i executate orice comenzi si operati cu "Ge-" si "m!rMGe-N" 9

, '#e0' e o &ariabila in care programul retine cheia (indexul! elementului curent parcurs (poate fi orice nume de &ariabila! din Arra0,ul 'mAr'. 1n 2utput afiseaza6 CheieJsite , &aloareJwww.marplo.net CheieJtutoriale , &aloareJ%a&aScript CheieJcurs , &aloareJAdobe Flash - Cu 2or eac+... in
// !rra- asociativ cu = elemente var m!r:!rra- = new !rra-(); m!rM<site<N = <www marplo net<; m!rM<curs<N = <!dobe Flas$<; m!rM<tutoriale<N = <Qava%cript<; // %e parcur"e matricea "m!r" cu "(or eac$ (or eac$(var elm in m!r) 5 in"

// %e a(iseaza in Dutput valoarea (iecarui element parcurs trace(<val3 , <@ elm); // Cot (i executate orice comenzi si operati cu "elm" 9

, 2bser&ati diferenta fata de 'for ... in'. Cu 'for each ... in' nu se obtine cheia elementului; &ariabila declarata intre paranteze (aici 'elm'! stocheaza insusi elementul parcurs. 1n 2utput afiseaza6 &al$ , Adobe Flash &al$ , www.marplo.net &al$ , %a&aScript , Fisiere F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. Arra0 multi,dimensional ). Arra0 asociati& -. "arcurgere Arra0 asociati&

Arra - Lucru cu 2unctii


ActionScript - contine numeroase functii pentru lucrul cu Arra . 1n aceasta lectie &or fi prezentate cate&a din aceste functii si exemple despre ce se poate face cu ele.

>. Stergere elemente din Arra


1n ActionScript - sunt mai multe moduri de a sterge unul sau mai multe elemente dintr,un Arra0, folosind diferite functii. Acestea sunt prezentate direct in exemplele urmatoare (e!plicatiile necesare sunt in comentariile din coduri!6 <. Cu operatorul delete Sintaxa generala6 delete numeArCinde$E , 'numeAr' este numele Arra0,ului, iar 'index' este indicele sau numele elementului a carui &aloare &a fi stearsa (sterge valoarea# n! si element!l!. $xemplu6
var m!r:!rra- = M<web<, <www marplo net<, <cursuri<, 'N; delete m!rM/N; // %ter"e valoarea elementului al doilea var nrBel:uint = m!r len"t$; // !(lare nr elemente dupa ster"ere // Aeri(icare cu "trace()" trace(nrBel@ < , <@ m!r); // > , web,,cursuri,'

, Dupa cum se &ede in rezultatul dat de 'trace(nr?el( P , P( mAr!;', operatorul delete sterge doar &aloarea elementului, acesta ramane gol in Arra0. ). Cu metoda pop37 Sintaxa generala6

numeAr.pop37 , metoda (functia! 'pop(!' sterge ultimul element din Arra0,ul 'numeAr' (opusul lui 'pus$&'', care adauga un element la sfarsit!, si returneaza &aloarea lui. $xemplu6
var m!r:!rra- = M<web<, <www marplo net<, <cursuri<, 'N; var delBar:: = m!r pop(); // %ter"e ultimul element, si,i adau"a valoarea in "delBar" var nrBel:uint = m!r len"t$; // !(lare nr elemente dupa ster"ere // Aeri(icare cu "trace()" ("delBar" si elemente din "m!r") trace(delBar); // ' trace(nrBel@ < , <@ m!r); // = , web,www marplo net,cursuri

-. Cu metoda s+i2t37 Sintaxa generala6 numeAr.s+i2t37 , metoda (functia! 'shift(!' sterge primul element din Arra0,ul 'numeAr' (opusul lui 'uns$i"t&'', care adauga un element la inceput!, si returneaza &aloarea lui. $xemplu6
var m!r:!rra- = M<web<, <www marplo net<, <cursuri<, 'N; var delBar:: = m!r s$i(t(); // %ter"e primul element, si,i adau"a valoarea in "delBar" var nrBel:uint = m!r len"t$; // !(lare nr elemente dupa ster"ere // Aeri(icare cu "trace()" ("delBar" si elemente din "m!r") trace(delBar); // web trace(nrBel@ < , <@ m!r); // = , www marplo net,cursuri,'

=. Cu metoda splice37 Sintaxa generala6 numeAr.splice3startInde$5 nr/lm7 , metoda (functia! 'splice(!' sterge din 'numeAr' un anumit numar de elemente, specificat la 'nr$lm', incepand cu cel al carui index e specificat la 'start1ndex'. , 'nr$lm' este optional, daca nu e adaugat, functia &a sterge toate elementele incepand cu cel de la 'start1ndex' (inclusi&! pana la sfarsit. , Dupa stergere, 'splice(!', reordoneaza indicii elementelor ramase. $xemplu6
var m!r:!rra- = M<web<, <www marplo net<, <cursuri<, 'N; m!r splice(/, .); // %ter"e doua elemente, incepand cu cel care are index / var nrBel:uint = m!r len"t$; // !(lare nr elemente dupa ster"ere // Aeri(icare cu "trace()" trace(nrBel@ < , <@ m!r); // . , web,'

Functia 'splice(!' poate fi utilizata pentru stergere si 7sau pentru adaugare elemente in Arra0. Formula completa fiind6 numeAr.splice3startInde$5 nr/lm5 elm>5 elmF5 ...7 , Cnde 'elm<, elm), ...' sunt elementele ce &or fi adaugate dupa efectuarea stergerii. , Daca la 'nr$lm' se da &aloarea *, functia &a efectua doar adaugarea elementelor, dupa cel specificat la 'start1ndex'.

F. *rdonare Arra
2rdinea elementelor dintr,un Arra0 poate fi schimbata cu anumite functii specifice. 2rdinea este importanta mai ales cand matricea este parcursa cu o instructiune repetiti&a. , re&erse37 , in&erseaza ordinea elementelor. $xemplu6

var m!r:!rra- = M<web<, <www marplo net<, <cursuri<, 'N; m!r reverse(); // Inverseaza ordinea, ultimul devine primul // Aeri(icare cu "trace()" trace(m!r); // ',cursuri,www marplo net,web

, sort3Arra .A,R7 , 'Arra0.A4T' este optional, daca nu e specificat, aran eaza elementele in ordine alfabetica, case,sensiti&e (adica, numerele inaintea literelor si 'V' precede 'a'!. , 1n loc de 'A4T' se poate adauga6

CAS/INS/NSITI=/ , ordonarea se face case,insensiti&a (fara diferenta intre ma uscule si litere mici! 0/SC/N0INR , ordoneaza in ordine in&ersa alfabetic NG)/,IC , doar pentru cazuri cand elementele sunt numere, altfel, daca sunt siruri, genereaza a&ertismente ,/TG,NIN0/T/0A,,AU , face ca expresia sa returneze indicii, fara a afecta ordinea din Arra0 GNIWG/S*,T , cu acest argument se poate &erifica daca in Arra0 exista ) elemente indentice, deoarece in acest caz returneaza *. Altfel, returneaza elementele in ordinea lor.

"ot fi aplicate mai multe argumente in acelasi timp, dupa formula6 sort3Arra .A,R> M Arra .A,RF7 $xemplu6
var m!r:!rra- = M<0eb<, <www marplo net<, <cursuri<, 'N; m!r sort(); // !ranOeaza in ordine al(abetica, case,sensitive // Aeri(icare cu "trace()" trace(m!r); // ',0eb,cursuri,www marplo net // 4odi(ica ordonarea, (olosind ca ar"ument "73%#3;7I;*" (ordonare invers al(abetic) m!r sort(!rra- 73%#3;7I;*); trace(m!r); // www marplo net,cursuri,0eb,'

3. Alte metode 32unctii7 pentru lucru cu Arra


1ata alte cate&a metode ActionScript - pentru lucru cu Arra0. , join3sep7 , transforma matricea (grupeaza elementele! in sir. $lementele fiind separate prin

ceea ce se specifica la 'sep' (precum .implode&'. in POP!. $xemplu6


var m!r:!rra- = M<web<, <www marplo net<, <cursuri<, 'N; var sir:%trin" = m!r Ooin(< , <); // Trans(orma "m!r" in sir, adau"at in "sir" // Aeri(icare cu "trace()" valoarea lui "sir" trace(sir); // web , www marplo net , cursuri , '

, concat3&al>5 &alF7 , Cneste mai multe Arra0 si elemente intr,un singur Arra0. '&al<', '&al)' pot fi &ariabile simple sau 7si Arra0. $xemplu6
var m!r:!rra- = M<web<, <www marplo net<, <cursuri<N; // #reaza un !rra- "arr." (ormat din "m!r" la care adau"a cu "concat()" . elemente var arr.:!rra- = m!r concat(F, '); // Aeri(icare cu "trace()" elementele din "arr." trace(arr.); // web,www marplo net,cursuri,F,' var arr=:!rra- = MJ, /&N; // ?n alt !rravar (in!r:!rra- = arr. concat(arr=, <abc<); // !dau"a in "(in!r" elementele din "arr.", "arr=" si <abc< // Aeri(icare cu "trace()" elementele din "(in!r" trace((in!r); // web,www marplo net,cursuri,F,',J,/&,abc

, pus+3&al>5 &alF7 , Adauga argumentele '&al<', '&al)', ... intr,un Arra0, la sfarsit, in ordine dupa cele de a existente. '&al<, '&al)', ... pot fi &ariabile simple sau 7si Arra0. $xemplu6
var m!r:!rra- = M<web<, <www marplo net<, <cursuri<N; m!r pus$(F, '); // !dau"a F si ' in "m!r", la urma // Aeri(icare cu "trace()" trace(m!r); // web,www marplo net,cursuri,F,'

, uns+i2t3&al>5 &alF7 , Adauga argumentele '&al<', '&al)', ... intr,un Arra0, la inceput, in ordine, inaintea celor de a existente. '&al<, '&al)', ... pot fi &ariabile simple sau 7si Arra0. $xemplu6
var m!r:!rra- = M<web<, <www marplo net<, <cursuri<N; m!r uns$i(t(F, '); // !dau"a F si ' in "m!r", la inceput // Aeri(icare cu "trace()" trace(m!r); // F,',web,www marplo net,cursuri

, slice3startInde$5 endInde$7 , "reia un sub,Arra0 cu un numar de elemente dintr,un Arra0, incepand de la elementul cu index 'start1ndex' (inclusi&! pana la cel cu indice 'end1ndex' (dar fara acesta!, (daca 'start1ndex' are &aloare negati&a, numaratoarea incepe de la sfarsit!. $xemplu6
var m!r:!rra- = M<web<, <www marplo net<, <cursuri<, F, 'N;

var sub!r:!rra- = m!r slice(/, =); la index / pana la index =

// Creia in "sub!r" elementele de

// Aeri(icare cu "trace(sub!r)" trace(sub!r); // www marplo net,cursuri

, map32unctie7 , Aplica o functie (specificata la argument! la fiecare element dintr,un Arra0 (precum .arraD4map&' din POP!. $xemplu6
// 7e(inire (unctie care v,a (i aplicata elementelor unui !rra(unction oFunctie(elm::, i:int, a:!rra-):;umber 5 return elm:elm; // )eturneaza elementul la puterea . 9 var m!r:!rra- = M6, R, F, 'N; // !plica (unctia "oFunctie" la elementele din "m!r" // %toc$eaza rezultatul (noul !rra-) in "m!r." var m!r.:!rra- = m!r map(oFunctie); // Aeri(icare cu "trace()" trace(m!r.); // .6,=R,>J,R>

- Sunt si alte 2unctii pentru lucru cu Arra in ActionScript 39 o lista si e$emple cu acestea gasiti la pagina o2iciala de pe site-ul de suport Adobe' 1unctii Arra - AS3.

Code Snippets - Adaugare si Creare


Code Snippets sunt bucati de cod predefinite, sal&ate in panoul 'Code Snippets, care pot fi refolosite. Acestea sunt organizate pe categorii si functii, precum6 'Animation', '/imeline Iavigation', si altele. Acest poanou se deschide din meniul !indow -> Code Snippets, sau de la butonul 'Code Snippets' din fereastra pentru scriere cod ActionScript (dupa cum se &ede in imaginea urmatoare!.

Flash are cate&a functii 7coduri sal&ate in 'Code Snippets'. De exemplu, pentru a face un 8uton sa execute salt la un anumit Cadru, in loc sa fie scris tot codul (cu e&enimentul si functia necesara!, se poate adauga direct din panoul 'Code Snippets', fiind sal&at in catalogul 'Timeline Na&igation', cu denumirea ' lic5 to 6o to Frame and 7la-'. Adaugarea se face prin dublu, clic#, sau prin selectarea denumirii si clic# pe butonul 'Add to current 1rame'. B Flash are adaugate in 'Code Snippets' unele din cele mai utilizate functii pentru lucrul cu ActionScript. Ca sa le cunoasteti trebuie sa 'rasfoiti' listele cu ele, denumirile prin care sunt sal&ate explica si rolul lor. "e langa aceste functii predefinite incluse de Adobe Flash, puteti adauga si propriile bucati de cod ca sa fie stocate in 'Code Snippets'; lucru util cand folositi mai des anumite expresii de cod mai mari, functii sau orice cod. B "entru a crea coduri adaugate in panoul 'Code Snippets', se da clic# pe meniul cu optiuni al panoului (in dreapta,sus! si se alege optiunea Create New Code Snippet, se &a deschide o fereastra ca cea din imaginea urmatoare.

, /a Title se scrie numele (cat mai sugesti&! care &a apare pentru acel cod adaugat in 'Code Snippets'. , Descrierea care e scrisa la Tooltip apare cand mouse,ul &a fi pozitionat pe numele de stocare in panou. , Codul ActionScript se scrie in zona de text Code. Daca e de a o anumita bucata de cod selectata in panoul 'Actions,Frame', cu butonul Auto-2ill se adauga acel cod selectat in zona 'Code'. , Dupa ce se apasa butonul 2G, codul respecti& este adaugat cu numele specificat la '.itle' intr, un director cu numele 'Custom' (creat automat de Flash!. Codurile predefinite cat si cele adaugate in 'Code Snippets' sunt stocate intr,un fisier S5/. , "entru a reedita un Code Snippet, se da clic#,dreapta pe el si se alege /dit Code Snippets T)L. Se &a deschide fisierul S5/ cu toate codurile predefinite din panou. 1n acel fisier trebuie cautat (cu 'Ctrl(F'! si editat codul dorit. Dupa care se apasa meniul 1ile -> Sa&e. , 2ptiunea 'Cop to Clipboard' copie respecti&ul cod in memorie, care apoi poate fi adaugat (cu "aste! in 'Action,Frame'. , Cu '0elete Code Snippet' se sterge acel cod din panou. , Fisierul S5/ cu toate codurile stocate in 'Code Snippets' poate fi exportat cu optiunea '/$port Code Snippets T)L'. , Cu ',eset to 0e2ault T)L' se reface panoul 'Code Snippets' cu codurile initiale predefinite.

0etectare e&enimente in ActionScript 3


/&enimentele (events! sunt actiuni realizate in prezentarea Flash de catre utilizator sau de alte elemente din acea prezentare. De exemplu, clic#,ul sau pozitionarea mouse,ului pe un element din Flash, scrierea intr,un camp .ext 1nput, sunt e&enimente facute de utilizator; iar, a ungerea la un anumit cadru a unei animatii sau finalizarea unei actiuni sunt e&enimente realizate de elemente din prezentare. ActionScript - contine obiecte si metode speciale pentru detectarea si recunoasterea e&enimentelor, in functie de acestea se pot executa anumite instructiuni cand acele e&enimente se produc. Ca ma oritatea lucrurilor in ActionScript -, e&enimentul este considerat obiect, deoarece are proprietati unde sunt stocate informatii despre el si metode pentru lucru cu datele lui. B "e scurt, un e&eniment lucreaza astfel6 elementul legat de actiunea produsa, denumit 'e&ent target' (eveniment tinta! @un buton apasat, o animatie, etc.! transmite date la script, sub forma unui obiect (denumit 'e&ent object'!. Scriptul trebuie sa contina o functie speciala cunoscuta ca 'e&ent listener' (detector de eveniment!, prin care detecteaza e&enimentul si preia datele lui pe care apoi le transmite la o functie ce poate efectua diferite comenzi scrise de programator. Functia 7metoda folosita in ActionScript - pentru a detecta si captura e&enimente este 'add/&entListener37'. o metoda din clasa .8vent9ispatcher., si inregistrea+a in script detectarea evenimentului speci"icat in ea. Sintaxa generala pentru utilizarea acestei metode este6

e&ent@target.add/&entListener3/&ent*bject.TI"5 o1unctie79 2unction o1unctie3ins@/&ent*bject'/&ent*bject7'&oid ; ## Codul care &a 2i e$ecutat <

, 'e&ent?target' este obiectul la care se produce e&enimentul (numele de instanta a lui. De ex., a unui buton care &a fi apasat!. , '$&ent2b ect' reprezinta categoria de e&enimente ce trebuie detectata. $ste si obiectul in care sunt stocate informatii despre e&enimentul produs (De ex., 5ouse$&ent, .ext$&ent!. , '.1"' este o constanta ce reprezinta tipul e&enimentului (cum ar fi6 C/1CG, 52CS$?29$4, C25"/$.$! din categoria specificata. , Formula 'e&ent?ob ect..1"' precizeaza exact e&enimentul ce trebuie recunoscut si preluat. De ex., 'Mouse vent)CH>CP' are ca detectare momentul cand se da clic# (pe 'e&ent?target'!, sau, ' vent.COMPH / ' detecteaza cand o actiune este finalizata (terminata!. , 'oFunctie' este functia care &a fi apelata cand e realizat e&enimentul, si &a fi executat codul din ea. , 'ins?$&ent2b ect' este instanta la obiectul '$&ent2b ect' prin care pot fi utilizate (procesate! datele transmise in acel obiect. ActionScript - are o multime de e&enimente ce pot fi recunescute, cum ar fi6 )ouse/&ent (pt. mouse!, Xe board/&ent (pt. tastatura!, Te$t/&ent (pt. campuri de text!, Scroll/&ent (pt. Scroll!, I*/rror/&ent (pt. cazuri cand apar erori!, si altele. Cnele din ele, cele mai utilzate, &or

fi prezentate in lectiile urmatoare. /ista cu toate tipurile de e&enimente, proprietatile, metodele si constantele lor poate fi gasita la pagina $&enimente AS-. 1ata un exemplu practic de utilizare a detectarii unui e&eniment. Cu acesta se realizeaza afisarea intr,un camp text din prezentarea Flash a unui continut preluat (incarcat! dintr,un fisier .S. extern.
// #reare "event tar"et" // D instanta a obiectului ?)11oader (pt incarcare date de la o adresa ?)1 var url1oader:?)11oader = new ?)11oader( ); // !plica metoda "load()" (de incarcare) la instanta ?)11oader // 1a ar"ument creaza o instanta ?)1)eUuest pentru speci(icare adresa (isier url1oader load(new ?)1)eUuest("unB(isier txt")); // %etare "event listener", cu eveniment de detectare a (inalizarii unei actiuni // !plicat la "url1oader", recunoaste cand incarcarea (isierului s,a terminat url1oader add3vent1istener(3vent #D4C13T3, campTxt); // Functia care va (i apelata de evenimentul setat (unction campTxt(evt:3vent):void 5 // %e de(ineste Instanta de obiect TextField pt creare camp text var campBtxt:TextField = new TextField(); campBtxt x = J=; // 7istanta (ata de mar"inea din stan"a campBtxt - = F6; // 7istanta (ata de mar"inea de sus campBtxt widt$ = /.6; // 1un"imea campului de text campBtxt $ei"$t = 6&; // Inaltimea campBtxt border = true; // !ctiveaza a(isarea unei borduri // !dau"a in campul de text datele incarcate din (isier, stocate in "evt" campBtxt text = evt tar"et data; add#$ild(campBtxt); 9 // !dau"a campul de text in prezentarea Flas$

, /a inceput trebuie creata o instanta la obiectul 'C4//oader', cu aceasta &a fi preluat (incarcat in Flash! continutul dintr,un fisier extern. Adresa C4/ de incarcare trebuie adaugata la aceasta instanta cu obiectul 'C4/4eWuest'. Aceleiasi instante i,se aplica metoda 'add$&ent/istener(!', la care se specifica sa recunoasca tipul de e&eniment '$&ent.C25"/$.$' (acti&at la finalizarea unei actiuni, aici cea de incarcare!. , Cand incarcarea facuta de 'url/oader' se termina, e acti&at e&enimentul inregistrat la acea instanta, care detecteaza finalizarea incarcarii. Atunci preia datele si le transmite la functia 'camp.ext', aceasta le retine in &ariabila (parametru! 'e&t', creaza un camp de text si cu expresia 'e&t.target.data' adauga datele preluate in camp si le afiseaza in prezentarea Flash. , Studiati si e!plicatiile din cod. Daca adaugati acest cod intr,un document Flash nou, faceti prezentarea SHF (cu $xport! si in acelasi director creati si 'un?fisier.txt' cu un text in el, &a rezulta o prezentare Flash ca aceasta6 Adresa C4/ a fisierului, adaugata la 'G,L,eVuest3DG,L@2isierD7', trebuie sa fie completa sau relati&a la prezentarea Flash, in functie de directotul in care se afla.

Stergere detectare e&eniment


"entru a opri un 'detector de e&eniment' (e&ent listener! setat cu 'add$&ent/istener(!' sa primeasca notificari despre e&enimentul ineregistrat, trebuie stearsa acea inregistrare, cu metoda 'remo&e/&entListener37' (apartine clasei '$&entDispatcher'!. Formula generala de utilizare a acestei metode este e&ent@target.remo&e/&entListener3/&ent*bject.TI"5 o1unctie79 , 'e&ent?target' reprezinta instanta la care a fost aplicat detectorul de e&eniment 'add$&ent/istener(!' care trebuie sters. , '$&ent2b ect..1"' e tipul e&enimentului. , 'oFunctie' e functia care a fost setata sa fie apelata. $ste indicata stergerea inregistrarii de detectare a unui e&eniment, cand nu mai e necesara in program, deoarece a uta la eliberarea memoriei folosite si a procesorului. $&enimentul inregistrat e permanent acti& si in legatura cu functia pe care o apeleaza (lucru stocat in memorie! pana cand e sters cu 'remo&e$&ent/istener(!'. 1ata in exempul prezentat mai sus cum trebuie alicata metoda
// #reare "event tar"et" // D instanta a obiectului ?)11oader (pt incarcare date de la o adresa ?)1 var url1oader:?)11oader = new ?)11oader( ); // !plica metoda "load()" (de incarcare) la instanta ?)11oader // 1a ar"ument creaza o instanta ?)1)eUuest pentru speci(icare adresa (isier url1oader load(new ?)1)eUuest("unB(isier txt")); // %etare "event listener", cu eveniment de detectare a (inalizarii unei actiuni // !plicat la "url1oader", recunoaste cand incarcarea (isierului s,a terminat url1oader add3vent1istener(3vent #D4C13T3, campTxt); // Functia care va (i apelata de evenimentul setat (unction campTxt(evt:3vent):void 5 // %e de(ineste Instanta de obiect TextField pt creare camp text var campBtxt:TextField = new TextField(); campBtxt x = /&&; // 7istanta (ata de mar"inea din stan"a campBtxt - = F6; // 7istanta (ata de mar"inea de sus campBtxt widt$ = /&&; // 1un"imea campului de text campBtxt $ei"$t = 6&; // Inaltimea campBtxt border = true; // !ctiveaza a(isarea unei borduri // !dau"a in campul de text datele incarcate din (isier, stocate in "evt" campBtxt text = evt tar"et data; add#$ild(campBtxt); // !dau"a campul de text in prezentarea Flas$

// 7upa ce campul e ada"at in prezentare, cu continutul incarcat // %ter"e inre"istrarea de detectare a acestui eveniment, pt a elibera memoria url1oader remove3vent1istener(3vent #D4C13T3, campTxt); 9

, instructiunea 'urlHoader.remove ventHistener& vent.COMPH / , camp/!t'(' e adaugata in functia 'camp.xt(!' dupa comanda de afisare a campului de text cu continutul incarcat din fisierul extern. Astfel, aceasta instructiune este executata dupa ce se termina rolul e&enimentului de preluare a datelor incarcate si afisarea lor, prin urmare nu mai e necesara pasrtrarea lui in memorie. , #aca aceasta instructiune ar "i scrisa in a"ara "unctiei apelate, .camp/e!t&'., ar avea ca e"ect stergerea detectarii evenimentului inainte ca "uncia sa "i "ost apelata si nu va mai "i e!ecutata deoarece evenimentul nu mai e detectat.

"rioritatea de capturare e&enimente


1n mod normal, daca sunt mai multe detectoare de e&eniment inregistrate la acelasi obiect (cu tipuri egale sau diferite!, ordinea de capturare si declansare a lor e cea in care sunt scrise in script. Dar aceasta ordine poate fi schimbata, folosind un 'parametru de prioritate' in metoda 'add$&ent/istener(!', dupa formula6 e&ent@target.add/&entListener3/&ent*bject.TI"5 o1unctie5 useCapture5 prioritate79 , /a 'useCapture' se pune &aloarea 2alse , 'prioritate' e un numar intreg mai mare sau egal decat zero, prin care se determina prioritatea de executie (default are &aloarea *!. Detectorul de e&enimente cu prioritatea mai mare este declansat inaintea celorlati. De exemplu, la urmatoarele ) e&enimente inregistrate6
url1oader add3vent1istener(3vent #D4C13T3, oFunctie, (alse, &); url1oader add3vent1istener(3vent #D4C13T3, altaFunctie, (alse, /);

, $ste declansat intai cel cu prioritatea <, care apeleaza 'altaFunctie', apoi, se executa cel setat cu prioritatea *. , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. Detectare e&enimente ). Stergere e&eniment

)ouse/&ent - /&enimente pentru )ouse


Cursorul mouse,ului e modul cel mai comun prin care utilizatorul interactioneaza cu prezentarea Flash. /&enimentele pentru mouse sunt diferitele actiuni ce pot fi facute cu mouse,ul, cum e apasarea Clic#, pozitionarea cursorului deasupra unui obiect sau chiar simpla miscare a lui. .oate aceste actiuni se numesc 'e&enimente de mouse' (mouse events! si pot fi detectate de clasa )ouse/&ent. .ipul e&enimentelor din categoria )ouse/&ent sunt6

CLICX , este declansat cand utilizatorul apasa si elibereaza clic#,ul (cu butonul din stanga! pe obiectul din prezentare

0*G-L/@CLICX , declanseaza e&enimentul atunci cand e apasat dublu,clic# pe obiectul inregistrat. Acesta trebuie sa aibe acti&ata 7setata proprietatea do!ble lic58nabled cu &aloare tr!e )*GS/@0*!N , detecteaza momentul cand clic#,ul e apasat (imediat, fara a fi necesar si eliberarea clic#,ului! )*GS/@G" , executa e&enimentul cand apasarea clic# este eliberata )*GS/@)*=/ , e&enimentul e declansat de fiecare data cand cursorul mouse,ului e miscat pe zona obiectului )*GS/@*GT , e&enimentul este executat in momentul cand mouse,ul iese din suprafata obiectului sau a oricarui 'element copil' din el )*GS/@*=/, , se declanseaza in momentul cand mouse,ul intra in suprafata obiectului monitorizat sau a oricarui 'element copil' din el )*GS/@!(//L , executa e&enimentul cand rotita de la mouse este rotita in moment ce cursorul se afla deasupra obiectului ,*LL@*GT , este similar cu 52CS$,2C., diferenta fiind ca e&enimentul e declansat doar cand mouse,ul paraseste complet zona obiectului, pe cand, la 52CS$?2C. declansarea se produce si la iesirea din suprafata fiecarui 'element copil' care se afla in obiectul monitorizat ,*LL@*=/, , este similar cu 52CS$,29$4, diferenta fiind ca e&enimentul e declansat cand mouse,ul intra in zona obiectului, pe cand, la 52CS$?29$4 declansarea se produce la intrarea in suprafata fiecarui 'element copil' care se afla in obiectul monitorizat

1ata un exemplu cu 5ouse$&ent pentru C/1CG, 52CS$?529$ si 52CS$?D2H3. 9a fi creata o prezentare flash cu ) cadre, in primul se adauga un buton si in al doilea o figura geometrica (o stea!. Se adauga cod ActionScript - prin care atunci cand e apasat butonul se face salt la cadrul ), in care e steaua. Cand mouse,ul e miscat pe stea, aceasta se in&arte si se micsoreaza, iar daca se apasa clic# pe ea (52CS$?D2H3! face salt la primul cadru, (cu butonul!. <. Deschideti un document Flash nou, ActionScript -.* ). Desenati in Scena un o&al (sau un dreptunghi!, (puteti adauga si un te!t, .Clic%. pe oval, cu ./e!t /ool.!, selectati,l si transformati,l in 8uton (din 5odif0 ,E Con&ert to S0mbol iar la .0pe alegeti 8utton!. -. Dati numele buton instantei butonului din Scena (in panoul "roperties, sus, unde e scris 'F1nstance 3ameE'!. Dupa cum se &ede in imaginea urmatoare.

=. Clic#,dreapta pe Cadrul ) in .imeline si alegeti '1nsert 8lan# Ge0frame' (se creaza un cadru nou gol!. Si selectati instrumentul pentru desenat figuri geometrice '"ol0Star .ool' (situat la butonul cu dreptunghi!. >. Clic# pe butonul 2ptions din panoul "roperties pt. '"ol0Star .ool', si in fereastra care se deschide, la St0le alegeti optiunea star (ca sa deseneze o stea, puteti modifica numarul de colturi la '3umber of Sides'! si apasati 2G. +. Alegeti o culoare gradient pentru stea (de la butonul *ill Color, cea cu multe culori, pt. un e"ect al rotirii mai vi+ibil! si desenati in Scena o stea. N. .ransformati steaua in 5o&ie Clip (de la meniul 5odif0 ,E Con&ert to S0mbol, iar la .0pe puneti 5o&ie Clip si apasati 2G!, apoi, in panoul "roperties, in partea de sus, unde e scris 'F1nstance 3ameE' scrieti numele stea petru aceasta instanta (e necesar ca sa fie folosit in codul ActionScript!. L. Creati un nou /a0er (din 1nsert ,E .imeline ,E /a0er! care &a fi utilizat pt. adaugare coduri ActionScript. , Puteti sa-i dati un nume speci"ic &de e!. .Actions. sau .Scripts.', prin dublu-clic% pe numele lui. D. Clic#,dreapta pe Cadru < din acest al doilea /a0er, alegeti Actions, iar in fereastra care se deschide pt. scriere cod ActionScript adaugati codul urmator.
stop(); // Dpreste prezentarea la cadrul / // Inre"istrare eveniment de mouse ( #1I#2 ) la instanta nuton buton add3vent1istener(4ouse3vent #1I#2, "otoF.); // Functia apelata la declansarea evenimentului inre"istrat (unction "otoF.(event:4ouse3vent):void 5 "oto!nd%top(.); // Face salt si oprire la #adru . 9

<*. Clic#,dreapta pe Cadru ) din /a0er,ul nou creat, alegeti Actions, iar in fereastra care se deschide pt. scriere cod ActionScript copiati codul urmator.
// Inre"istrare eveniment de mouse ( 4D?%3B4DA3 ) la instanta stea stea add3vent1istener(4ouse3vent 4D?%3B4DA3, rotate);

// Inre"istrare inca un eveniment de mouse ( 4D?%3B7D0; ) la instanta stea stea add3vent1istener(4ouse3vent 4D?%3B7D0;, "otoF/);

// Functia apelata la declansarea evenimentului 4D?%3B4DA3 (unction rotate(evt:3vent):void 5 // )otire obiect ce a declansat evenimentul evt tar"et rotationS ,= .; // 7aca lun"imea acestui obiect e mai mare de '& pixeli // micsoreaza lun"imea si inaltimea cu 6 i((evt tar"et widt$E'') 5 evt tar"et widt$ ,= 6; evt tar"et $ei"$t ,= 6; 9

// Functia apelata la declansarea evenimentului 4D?%3B7D0; (unction "otoF/(evt.:4ouse3vent):void 5 "oto!nd%top(/); // Face salt si oprire la #adru / 9

, Acesta este "olosit de *las$ cand pre+entarea ajunge la cadru 2. , "rin comanda 'stop(!' se opreste prezentarea la Cadrul unde e adaugata, ca sa ramana ce e afisat in el; altfel ar fi continuat cu urmatorul Frame. , expresia 'e&t.target' face referire la elementul care a initializat e&enimentul detectat. , 'e&t.target.rotationV ,J );' roteste cu ) grade in plan V obiect ce a declansat e&enimentul. , Acest cod &a afisa urmatoarea prezentare Flash. Apasati clic# pe buton apoi miscati mouse,ul pe steaua care apare si dati clic# pe ea.

Coordonate )ouse
Cu obiectul )ouse/&ent se poate captura 7afla si coordonatele mouse,ului in prezentarea Flash. Acesta are urmatoarele proprietati pentru aflarea pozitiei cursorului de mouse, in raport cu scena (coltul stanga,sus! si in raport cu elementul ce declanseaza e&enimentul.

localT , coordonata pe axa orizontala a mouse,ului in obiectul la care se produce e&enimentul localU , coordonata pe axa &erticala a mouse,ului in obiectul la care se produce e&enimentul stageT , coordonata pe axa orizontala, raportata la coltul din stanga,sus a scenei stageU , coordonata pe axa &erticala, raportata la coltul din stanga,sus a scenei

"reluand aceste coordonate, se pot executa diferite instructiuni si comenzi in functie de &aloarea lor. Dupa cum puteti &edea in exemplul urmator. $fectuati urmatorii pasi. <. Deschideti un document Flash nou, ActionScript -.* ). Desenati pe mi locul Scenei un dreptungi si transformati,l in 5o&ie Clip (de la meniul 5odif0 ,E Con&ert to S0mbol, iar la .0pe alegeti 5o&ie Clip si apasati 2G!, apoi, in panoul "roperties, in partea de sus, unde e scris 'F1nstance 3ameE' scrieti numele dreptunghi (numele de instanta folosit in codul ActionScript!. -. Alegeti instrumentul '.ext .ool' si scrieti deasupra dreptunghiului6 Coordonate in Scena, si

dati acestui camp de text numele de instanta txtS. Scrieti si sub dreptungi textul Coordonate in Dreptungi, si dati acestui camp de text numele de instanta txtD. Dupa cum se &ede in imaginea urmatoare.

=. Clic#,dreapta pe cadrul < in .imeline si alegeti Action, iar in panoul care se deschide pt. ActionScript adaugati urmatorul cod6
// Inre"istrare eveniment de mouse ( 4D?%3B4DA3 ) la instanta dreptun"$i dreptun"$i add3vent1istener(4ouse3vent 4D?%3B4DA3, "et#oord); // Functia apelata (unction "et#oord(evt:4ouse3vent):void 5 // !dau"a coordonatele mouse,scena in instanta txt% txt% text = <#oordonate in %cena: <@ evt sta"eP@ <, <@ evt sta"e8; // !dau"a coordonatele mouse,dreptun"$i in instanta txt7 txt7 text = <#oordonate in 7reptun"$i: <@ evt localP@ <, <@ evt local8; // %etare variabila <culoare< pt sc$imbarea culorii var culoare:#olorTrans(orm = dreptun"$i trans(orm colorTrans(orm; // 7aca coordonata P locala e mai mare de J& (pixeli) seteaza culoare "albena // !lt(el, o seteaza verde i((evt localPEJ&) culoare color = &xeded&/; else culoare color = &x&&(e&&; // !plica sc$imbarea culoarii la instanta dreptun"$i dreptun"$i trans(orm colorTrans(orm = culoare; 9

>. Apasati Ctrl($nter ca sa testati rezultatul. 9a apare urmatoarea prezentare Flash6. , Daca miscati mouse,ul pe dreptunghi, in textul de sus &a afisa si locatia cursorului in raport cu Scena, si in campul text de os &a afisa coordonatele cursorului in dreptunghi (in raport cu coltul din stanga,sus al lui!.

, Cand mouse,ul a unge pe dreptunghi la coordonate S (pe orizontala! cu &aloare mai mare de D* pixeli (in jumatatea dreapta a dreptung$iului! schimba culoarea acestuia. , 'e&t.stageS', 'e&t.stageI', 'e&t.localS' si 'e&t.localI' returneaza coordonatele mouse,ului, in Scena si dreptunghi, stocate in obiectul 'e&t'. , Alte explicatii necesare sunt in cod. , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. $&enimente mouse ). Coordonate mouse

Xe board/&ent - /&enimente pentru Tastatura


/&enimentele pentru Tastatura (cand e apasat un buton de la tastatura! sunt detectate cu obiectul Xe board/&ent. Acesta are doua tipuri6

X/U@0*!N , declanseaza e&enimentul cand butonul e apasat. X/U@G" , declanseaza e&enimentul cand apasarea butonului este eliberata.

Xe board/&ent are + proprietati6

c+arCode , contine un numar ce reprezinta &aloarea de cod a caracterului de la butonul apasat sau eliberat. , De exemplu6 pentru PaP &aloarea de cod e DN, pt. PAP e +>, pt. P-P este ><, iar pentru PShift(-P (adica P:P! este ->. .e Code , contine un numar cu &aloarea codului butonului apasat. Diferenta fata de 'charCode' e aceea ca 'charCode' returneaza &aloarea * pt. tastele care nu reprezinta un caracter (Shift, Ctrl, sagetile, ...!, dar '#e0Code' contine un numar specific si pentru aceste taste. , De exemplu6 pt. PShiftP returneaza numarul <+, pt. Psageata,dreaptaP numarul -<. .e Location , contine un numar ce indica locatia butonului apasat. Folosit pt. taste care apar mai mult de o data pe tastatura, cum sunt Shift, Alt. altXe , true daca tasta PAltP e acti&a, sau 2alse daca e inacti&a ctrlXe , true daca tasta PCtrlP e acti&a, sau 2alse daca e inacti&a. s+i2tXe , true daca PShiftP e acti&, sau 2alse daca e inacti&.

, De retinut ca &alorile codurilor pt. 'charCode' si '#e0Code' difera in functie de sistemul de operare al calculatorului. $xemplele de aici sunt pentru Hindows. , Ca sa fie detectat butonul apasat in prezentarea Flash, se aplica metoda add/&entListener37 (cu Xe board/&ent! la Scena (obiectul stage!. 1ata un exemplu cu 'Ge0board$&ent' si G$I?D2H3 in care e folosita proprietatea '#e0Code',

prin care &a fi miscat un dreptunghi cu sagetile de la tastatura; iar proprietatea 'shiftGe0' &a fi utilizata pt. a modifica &iteza de miscare. <. Deschideti un document Flash nou, ActionScript -.* ). Desenati un dreptungi si transformati,l in 5o&ie Clip (de la meniul 5odif0 ,E Con&ert to S0mbol, iar la .0pe alegeti 5o&ie Clip si apasati 2G!, apoi, in panoul "roperties, in partea de sus, unde e scris 'F1nstance 3ameE' scrieti numele dreptunghi (necesar in codul ActionScript!. -. Clic#,dreapta pe Cadru < in .imeline si alegeti Action, iar in panoul care se deschide pt. ActionScript adaugati urmatorul cod6
// Inre"istrare eveniment pt detectare apasare buton de la tastatura // 7etectarea se aplica obiectului <sta"e< pt a (i activ in toata prezentarea sta"e add3vent1istener(2e-board3vent 238B7D0;, moveF); // Functia apelata la apasarea tastei (unction moveF(Ge-Bevt:2e-board3vent):void 5 // %etare variabila pt viteza de miscare, in (unctie de "s$i(t2e-" var vi:int = Ge-Bevt s$i(t2e- K /. : .; // Instructiune "switc$" cu valori si comenzi pt tastele sa"eti // #odurile pt sa"etile: %tan"a, 7reapta, Qos, %us switc$ (Ge-Bevt Ge-#ode) 5 case =F: dreptun"$i x ,= vi; breaG; case =J: dreptun"$i x @= vi; breaG; case =': dreptun"$i - ,= vi; breaG; case >&: dreptun"$i - @= vi; breaG; de(ault: breaG; 9

=. Apasati Ctrl($nter ca sa testati rezultatul. 9a apare urmatoarea prezentare Flash6. , Cand apasati sagetile de la tastatura, dreptunghiul se &a misca in directia data de fiecare sageata (intai sa dati clic% pe pre+entare!. , Daca tineti apasata tasta Shift, &iteza de miscare &a fi mai mare. , $xpresia '&ar &i6int J #e0?e&t.shiftGe0 X <) 6 );' defineste &aloarea <) daca '#e0?e&t.shiftGe0' e .4C$ (cand Shift e apasat! sau ) daca e FA/S$ (Shift neapasat!. , Comenzile din instructiunea 'switch' modifica &aloarea PxP si P0P pt. instanta 'dreptunghi' (distanta S si I!, cu &aloarea &ariabilei '&i', in functie de sageata apasata de la tastatura. Ca sa aflati codul pt. fiecare tasta, puteti folosi urmatorul script AS-6 stage.add/&entListener3Xe board/&ent.X/U@0*!N5 .e C79 2unction .e C3.e 'Xe board/&ent7'&oid ; trace3.e ..e Code79 < , Afiseaza in panoul 2utput codul tastei apasate.

- 1isierul 1LA cu acest e$emplu poate 2i descarcat de la' /&enimente Tastatura.

Creare si Adaugare te$t cu ActionScript 3


1n prima lectie, dupa 1ntroducere, e aratat cum se creaza un script ActionScript, in care e prezentat si un exemplu simplu de adaugare text cu AS-. 1n aceasta lectie este explicat mai detaliat modul de creare si adaugare text intr,o prezentare Flash cu ActionScript -.*, precum si cate&a proprietati si metode pentru definirea textului. , De ce sa creem .ext sau alte obiecte cu ActionScript cand acestea pot fi create direct in ScenaX De exemplu, pot fi facute prezentari, ocuri care in urma unor anumite actiuni ale utilizatorului sa genereze afisarea unui .ext specific; acest lucru se realizeaza cu ActionScript. B "entru a crea text cu AS- se foloseste obiectul 7clasa Te$t1ield, aceasta contine mai multe proprietati si metode pentru definirea textului; cum ar fi, pentru culoare, marime, pozitie, si altele. 1ata cate&a din proprietatile ce pot fi aplicate direct instantei pt. text.

$ , Seteaza distanta campului pt. text fata de marginea din stanga , Seteaza distanta campului pt. text fata de marginea de sus widt+ , Defineste lungimea campului pt.afisarea textului +eig+t , Defineste inaltimea campului pt.afisarea textului te$tColor , Culoarea textului (in format 0$,,RR--, 4T8 J 4ed @rosuA, Treen @verdeA, 8lue @albastruA! bac.groundColor , Defineste o culoare pentru fundalul zonei de text bac.ground , true sau 2alse, specifica daca &a fi afisat fundalul definit borderColor , Defineste o culoare pt. bordura 7marginea din urul textului border , true sau 2alse, specifica daca &a fi afisata bordura definita autoSiQe , Controleaza aliniamentul zonei de text (cat cuprinde textul! in campul pentru text, realizeaza si o auto,dimensionare a zonei textului in campul pt. text. 9alorile ce le primeste sunt6 'none', 'left', 'right' si 'center'. te$t , Adauga textul (sirul! in instanta 'textField' +tmlTe$t , Adauga un text cu format ;.5/. Sunt recunoscute tag,urile6 .a1 (c! atrib!tele' :href: si :tatget:)# .b1# .br1# .font1# .img1 (;76# 6/F# 706# (<F. Foloseste !n :id: in care se specifica n!mele instantei =ovie lip care va contine imaginea)# .i1# .li1 (fara .!l1 sa! .ol1)# .p1# .span1# .!1; prec!m si entitatile >,=?' @lt;# @gt;# @amp;# @A!ot;# @apos; st leS+eet , Ataseaza la text o instanta cu stiluri CSS, creata cu clasa 'St0leSheet' multiline , true sau 2alse, indica daca in campul pt. text pot fi sau nu mai multe linii (necesar cand se adauga text cu format ;.5/! word!rap , true sau 2alse, indica daca &a a&ea sau nu 'word,wrap' campul de text.

, /ista completa cu proprietatile si metodele ActionScript - poate fi gasita la pagina oficiala Adobe Flash6 "roprietati si metode textField. , 1ntai se creaza o &ariabila cu tipul '.extField' si instanta la aceasta clasa, dupa care, la instanta

aceasta se pot adauga textul, proprietatile si functiie necesare, iar pentru adaugarea textului in prezentare se foloseste addC+ild37. 1ata prin exemplu practic cum se folosesc aceste proprietati6 <. Deschideti un document Flash nou, ActionScript -.* ). Clic#,dreapta pe primul cadru din .imeline si alegeti Actions -. 1n fereastra care se deschide pentru scriere ActionScript, adaugati urmatorul cod6
// Initializeaza o instanta "TextField" intr,o variabila "txt" de acelasi tip "TextField" var txt:TextField = new TextField(); // %e aplica proprietati pt campul de text, la instanta creata txt x = 6&; // 7istanta (ata de mar"inea din stan"a txt - = '&; // 7istanta (ata de mar"inea de sus txt widt$ = .&&; // 1un"imea campului pt text txt text#olor = &x&&&&da; // #uloarea textului txt bacG"round#olor = &xeded(e; // %eteaza culoare (undal txt bacG"round = true; // !ctiveaza a(isarea culori de (undal txt border#olor = &x&&F'&&; // %eteaza culoare bordura txt border = true; // !ctiveaza a(isare bordura txt text = "+ine ai venit Vn 7rum bun"; // !dau"a textul // !linierea zonei cu text ((undal si bordura) in campul creat txt auto%ize = "center"; // !plica "add#$ild()" la instanta ca sa o adau"e in prezentarea Flas$ add#$ild(txt);

, 'Un' adauga o linie noua. , $xista diferenta intre 'zona de text' si 'campul pt. text'. Cand proprietatea 'autoSize' are &aloare 'none', zona de text si campul ei sunt acelasi, dar cand i,se da o alta &aloare (left, right, center! zona textului (fundalul si bordura! &a cuprinde doar suprafata ocupata de el. =. "entru a &edea rezultatul, apasati 'Ctrl($nter', &a apare ca,n imaginea urmatoare6.

B 1n text se pot folosi si unele tag,uri ;.5/, precum si stiluri CSS pentru designul textului. , "entru adaugare text in care sa fie recunoscute tag,urile ;.5/, se foloseste proprietatea '+tmlTe$t'. Sunt recunoscute doar cateva din tag-urile O/MH, cele pre+entate mai sus la aceasta proprietate.

, "entru a include si stiluri CSS, se foloseste proprietatea 'st leS+eet', obiectul 'St leS+eet' si metoda acestuia, 'parseCSS3DstilCSSD7', care preia ca argument un sir cu proprietatile CSS. /ista cu proprietatile si metodele clasei 'St leS+eet' o gasiti la pagina6 "roprietati si metode St0leSheet "roprietatile CSS recunoscute sunt6 color# displa-# fontBfamil-# fontBsiCe# fontBst-le# fontBweight# leading# letterBspacing# marginBleft# marginBright# textBalign# textBdecoration# textB indent. 1n continuare puteti testa urmatorul cod AS-, care adauga intr,o prezentare Flash text formatat cu tag,uri ;.5/ si stiluri CSS (e!plicatiile sunt in documentatia din script!.
// Initializeaza o instanta "TextField" intr,o variabila "txt" de acelasi tip "TextField" var txt:TextField = new TextField(); // 7e(inire proprietati pt txt widt$ = /'&; txt $ei"$t = /&&; txt word0rap = true; txt multiline = true; campul de text

// %etare variabila cu stilurile #%% aplicate var cssBst:%trin" = " bv5color:W&'&'(e; (ont,(amil-:!rial; (ont,size:/Rpx; (ont,wei"$t:bold;9 ad(5color:Wed&F&'; (ont,(amil-:Aerdana; (ont,size:/=px; (ont,st-le:italic9"; // 7e(ineste instanta la obiectul "%t-le%$eet" var st-les:%t-le%$eet = new %t-le%$eet(); // !plica metoda "parse#%%" la variabila cu sirul #%% (cssBst) st-les parse#%%(cssBst); // !taseaza la "txt", cu proprietatea "st-le%$eet" instanta cu stilul #%% din "st-les" txt st-le%$eet = st-les; // !dau"are text cu (ormat TT41 si . clase pt #%% ("bv" si "ad(") txt $tmlText = <Lspan class="bv"E+un venitL/spanELbrEL(ont size="/." color="W&&a'&&"Epe site,ul LuELa $re(="$ttp://www marplo net"Ewww marplo netL/aEL/uEL/(ontELbrELspan class="ad("E#ursul !dobe Flas$L/spanE <; // !plica "add#$ild()" la instanta ca sa o adau"e in prezentarea Flas$ add#$ild(txt);

, Acest cod &a afisa o prezentare Flash precum cea din imaginea urmatoare6

GtiliQare Te$t1ormat
Ctilizarea obiectului Te$t1ormat este un alt mod de a formata si defini grafic un text in campul 'textField'. "entru a folosi Te$t1ormat, trebuie creata o instanta la acest obiect (cu new Te$t1ormat!, la care se pot aplica proprietatile si metodele acestuia, pe care le gasiti la pagina6 "roprietati si metode .extFormat; apoi, instanta acestui obiect se adauga la cea pentru text (creata cu 'textField'!. , 1ata si un exemplu cu '.extFormat'6
// %e creaza o instanta TextFormat var textF:TextFormat = new TextFormat(); // %e aplica proprietati pt textF le(t4ar"in = 66; campului pt text textF (ont = "!rial"; textF color = &x6RF'(e; textF size = /F; (ormatul textului care va (i ulterior creat // 7istanta (ata de mar"inea din stan"a a // 7e(ineste (ontul // #uloarea // 4arimea textului (in pixeli)

// Initializeaza o instanta "TextField" intr,o variabila "txt" var txt:TextField = new TextField(); // 7e(inire proprietati pt txt widt$ = .>&; txt word0rap = true; campul de text

txt multiline = true; txt text = "Text cu TextFormat Vn#urs !ction%cript ="; // !dau"a Textul

// !plica metoda "setTextFormat()" la campul de text, cu parametru instanta "textF" txt setTextFormat(textF); // !plica "add#$ild()" la instanta ca sa o adau"e in prezentarea Flas$ add#$ild(txt);

, Acest cod &a afisa o prezentare Flash ca cea din imaginea urmatoare6

B Se poate aplica .extFormat doar unei portiuni din text, cu metoda6 nameField.set.extFormat(textFormat, caracterStart, caracter$nd!; , 'nameField' este instanta creata cu 'Te$t1ield' , 'textFormat' este instanta creata cu 'Te$t1ormat' , 'caracterStart' e un numar ce reprezinta caracterul din sirul text de la care incepe aplicarea .extFormat , 'caracter$nd' e un numar ce reprezinta caracterul din sirul text unde se termina aplicarea .extFormat. #e e!., la scriptul anterior, incercati) txt.set,extFormat(textF# D# 1D); Caracterele folosite pentru text in instanta .extField pot fi restrictionate cu expresii tip 4$T$S, folosind proprietatea restrict. $xemple6 textField.restrict J '*,D'; 77 "ermite doar numere textField.restrict J '*,D A,F'; 77 "ermie doar numere si litere mari de la A la F

textField.restrict J '*,D A,F Y a,z'; litere mici

77 "ermie numere si litere mari de la A la F, fara

B 2 alta modalitate de a crea campuri de text in Flash, in care textul sa fie adaugat interacti& cu ActionScript, e combinarea trasarii in Scena a campului pentru text si codul AS-. 5etoda e simpla, se creaza in Scena campul pt. text (cu '.ext .ool'!, i,se da un nume de instanta acelui camp, apoi, numele respecti& poate fi utilizat in ActionScript ca si cum ar fi o 1nstanta de obiect '.extField'. A&anta ul e ca se pot combina optiunile grafice care pot fi aplicate textului cu instrumentele din Scena si interacti&itatea data de ActionScript. 9edeti tutorialul Adaugare .ext cu ActionScript - in camp .ext din Scena. , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. Adaugare text cu .extField ). .ext cu tag,uri ;.5/ si stiluri CSS -. Ctilizare Format.ext

Campuri de Te$t Input


Campurile de Te$t Input sunt zone in care textul poate fi modificat si adaugat de utilizator. "entru a crea un camp te$t input, se foloseste proprietatea 't pe' a obiectului Te$t1ield, cu &aloarea 'input' (sau &aloarea Te$t1ieldT pe.IN"GT!. Campurile .ext 1nput fiind create cu obiectul 'Te$t1ield', se pot aplica si celelalte proprietati ale acestui obiect, pentru dimensionare, pozitie, formatarea textului si a zonei de text. Cum ar fi, definirea unei borduri, culoare bac#ground, setare numar caractere permise sau restrictionare caractere ce pot fi scrise in campul input. 1ata un exemplu cu .ext 1nput ( !plicatiile necesare sunt in cod!6
// 7e(inire Instanta de obiect TextField var txtBinp:TextField = new TextField(); // %e aplica proprietati instantei txtBinp x = /&&; txtBinp - = 6&; txtBinp widt$ = /&&; txtBinp $ei"$t = .&; txtBinp t-pe = "input"; txtBinp border = true; txtBinp border#olor = &x&&&&da; create // 7istanta (ata de mar"inea din stan"a // 7istanta (ata de mar"inea de sus // 1un"imea campului de text // Inaltimea // %eteaza campul de text ca Input // !ctiveaza a(isarea unei borduri // 7e(ineste culoarea bordurii

// Cermite doar adau"area de numere si litere mici de la <a< la <e< txtBinp restrict = "&,J a,e"; // %etare numar maxim de caractere ce pot si scrise txtBinp max#$ars = .';

txtBinp text = <;ume<; // !dau"a Instanta cu "txtBinp" in prezentarea Flas$ add#$ild(txtBinp);

, Acest cod &a afisa urmatoarea prezentare Flash. Daca testati, in campul de text afisat puteti sterge si adauga alt text, dar, comform setarii 't!t4inp.restrict - .0-= a-e.(', utilizatorul poate scrie doar numere si litere de la PaP la PeP. , "entru ca in campul 1nput sa poata fi adaugate mai multe randuri de text (cu $nter!, trebuie aplicata proprietatea multiline, cu &aloare true. , "entru a face ca zona 1nput .ext sa fie utilizata ca un camp 1nput pentru parola (caracterele scrise sunt inlocuite cu asterix 'K'! se foloseste proprietatea displa As"assword cu &aloarea true. , Ca la orice camp de text creat cu '.extField', acesta poate fi formatat cu proprietatile obiectului 'Te$t1ormat'.

>. GtiliQare Te$t/&ent Input


1n general, rolul unui camp de .ext 1nput e acela de a utiliza textul adaugat de utilizator pentru anumite actiuni. Cu obiectul Te$t/&ent ataugat la 'add/&entListener37' Flash recunoaste 7detecteaza momentul (sau e&enimentul! cand utilizatorul scrie ce&a in campul 1nput; poate sa preia caracterul adaugat sau textul din camp, iar in functie de acestea se pot executa diferite instructiuni. Sintaxa pentru utilizarea obiectului '.ext$&ent' este urmatoarea6

camp@t$t.add/&entListener3Te$t/&ent.T/TT@IN"GT5 o1unctie79 2unction o1unctie3insT$t/&'Te$t/&ent7'&oid ; ## Codul care &a 2i e$ecutat ## cand utiliQatorul adauga un caracter in Dcamp@t$tD <

, 'camp?txt' este instanta '.extField' pt. campul de text 1nput. , 'add$&ent/istener(!' este o metoda ActionScript - de recunoastere 7detectare a e&enimentelor realizate in prezentarea Flash. , '.ext$&ent..$S.?13"C.' este obiectul si cu tipul e&enimentului ce trebuie recunoscut si preluat. , 'oFunctie' este functia care &a fi apelata 7executata cand utilizatorul scrie in campul 1nput. , 'ins.xt$&' este instanta la obiectul '.ext$&ent' prin care pot fi utilizate (procesate! date preluate. , Cu insT$t/&.te$t se preia ultimul caracter introdus de utilizator in zona de text 1nput. $&enimentul nu este expediat la stergerea caracterelor (cu Delete sau 8ac#space!. , "entru a pre&eni 7anula adaugarea in campul 1nput a caracterului tastat de utilizator, dar e&enimentul sa fie insa capturat, se foloseste in functia apelata (aici 'txt1np(!' metoda pre&ent0e2ault37. $ste utila cand, de ex., se doreste afisarea altui cu&ant sau caracter in functie de ce e scris.

1ata un exemplu de cod ActionScript - prin care se recunoaste momentul cand sunt scrise caractere intr,un camp text 1nput, si in functie de numarul de caractere adaugate se modifica culoarea bordurii si cea de fundal. Studiati si e!plicatiile din cod.
// 7e(inire Instanta de obiect TextField var txtBinp:TextField = new TextField(); // %e aplica proprietati instantei create txtBinp x = /&&; // 7istanta (ata de mar"inea din stan"a txtBinp - = 6&; // 7istanta (ata de mar"inea de sus txtBinp widt$ = /&&; // 1un"imea campului de text txtBinp $ei"$t = .&; // Inaltimea txtBinp t-pe = "input"; // %eteaza campul de text ca Input txtBinp border = true; // !ctiveaza a(isarea unei borduri txtBinp border#olor = &x&&&&da; // 7e(ineste culoarea bordurii txtBinp max#$ars = .'; // ;umar maxim de caractere permise txtBinp bacG"round#olor = &x(e(e/'; // 7e(ineste culoarea (undal txtBinp bacG"round = true; // !ctiveaza a(isare (undal // !dau"a Instanta cu "txtBinp" in prezentarea Flas$ add#$ild(txtBinp); // %e de(ineste expresia ce recunoaste evenimentul din campul Input txtBinp add3vent1istener(Text3vent T3PTBI;C?T, txtInp); // Functia ce va (i apelata de evenimentul setat (unction txtInp(txt3vent:Text3vent):void 5 // Creia numarul de caractere din "txtBinp" var nr:int = txtBinp text len"t$; // 7e(ineste e(ectuarea unor comenzi in (unctie de nr de caractere // %c$imbare culoare bordura si daca "nrER" adau"a bacG"round i((nrL=) txtBinp border#olor = &xda&&&&; else i((nrL6) txtBinp border#olor = &x&&da&&; else i((nrE6) txtBinp bacG"round#olor = &xe'e'(e; 9

, Daca adaugati acest cod intr,un document Flash nou, &a rezulta urmatoarea prezentare6 , 9edeti rezultatul adaugand mai multe caractere in campul de text (se &a modifica culoarea bordurii si la urma culoarea de fundal!. "entru a pre&eni 7anula adaugarea in campul 1nput a caracterului tastat de utilizator, dar e&enimentul sa fie insa capturat, se aplica in functia apelata (aici 'txt1np(!'!, la obiectul cu e&enimentul transmis (aici 'txt$&ent'!, metoda pre&ent0e2ault37 (de ex., t$t/&ent.pre&ent0e2ault379!. $ste utila cand, de ex., se doreste afisarea altui cu&ant sau caracter in functie de ce se scrie. , "entru a adauga mai multe campuri de text input, trebuie creata cate o instanta cu '.extField' pt. fiecare 1nput.

F. /&enimente 1ocus/&ent - 1*CGS@IN5 1*CGS@*GT

1n afara de e&enimentul creat la adaugarea de caractere, se pot efectua diferite actiuni si pentru momentele cand utilizatorul da clic# 7intra pe un camp .ext 1nput (*OC;S4>I! sau iese din el (*OC;S4O;/!, utilizand e&enimentele 1ocus/&ent (F) E(&/0 si F) E(&)E,!. 5etoda este similara cu cea prezentata mai sus, pentru '.ext$&ent' Studiati urmatorul exemplu si explicatiile din cod. Aici este definita o functie prin care pot fi usor definite mai multe campuri de text input, apoi se scriu expresiile pt. preluarea e&enimentelor 1ocus/&ent si functiile ce &or fi apelate de acestea.
// Functie pentru creare campuri Text Input // Creia ca ar"umente: instanta, distanta 8 si text (unction setInput(inst, d-, txt):void 5 // %e aplica proprietati instantei primite "inst" inst x = /&&; // 7istanta (ata de mar"inea din stan"a inst - = d-; // 7istanta (ata de mar"inea de sus inst widt$ = /&&; // 1un"imea campului de text inst $ei"$t = .&; // Inaltimea inst t-pe = "input"; // %eteaza campul de text ca Input inst border = true; // !ctiveaza a(isarea unei borduri inst border#olor = &x&&&&da; // 7e(ineste culoarea bordurii inst max#$ars = .'; // ;umar maxim de caractere permise inst bacG"round#olor = &xe'e'e'; // 7e(ineste culoarea (undal inst bacG"round = true; // !ctiveaza a(isare (undal inst text = txt; // Textul initial a(isat in Input // !dau"a Instanta in prezentarea Flas$ add#$ild(inst);

// Functia pt FD#?%BI; (unction setFIn((ocus:Focus3vent):void 5 // 7e(ineste culoare bordura si bacG"round pt campul tinta (tar"et) ((ocus tar"et as TextField) border#olor = &x&&da&&; ((ocus tar"et as TextField) bacG"round#olor = &x(e(e&'; 9 // Functia pt FD#?%BD?T (unction setFDut((ocus:Focus3vent):void 5 // 7e(ineste culoare bordura si bacG"round pt campul tinta (tar"et) ((ocus tar"et as TextField) border#olor = &x(e&&&&; ((ocus tar"et as TextField) bacG"round#olor = &xeFe'(e; 9 // 7e(inire prima si a doua Instanta de obiect TextField var txtBinp/:TextField = new TextField(); var txtBinp.:TextField = new TextField(); // %etare pt recunoastere evenimente Focus3vent (FD#?%BI; si FD#?%BD?T), pt (iecare instanta txtBinp/ add3vent1istener(Focus3vent FD#?%BI;, setFIn); txtBinp/ add3vent1istener(Focus3vent FD#?%BD?T, setFDut); txtBinp. add3vent1istener(Focus3vent FD#?%BI;, setFIn);

txtBinp. add3vent1istener(Focus3vent FD#?%BD?T, setFDut); // !pelare (unctie "setInput" pt de(inirea campurilor la (iecare instanta TextField setInput(txtBinp/, 6&, <Input /<); setInput(txtBinp., '&, <Input .<);

, Acest cod afiseaza ) campuri de .ext 1nput. Cand se da clic# pe unul din ele (oricare! se schimba culoarea lui de fundal si a bordurii (dupa cum e setat in functia 'setF1n(!'!, iar cand se iese din acel camp se modifica din nou acele culori (dupa cum e setat in functia 'setF2ut(!'!. "uteti testa si &edea in prezentarea urmatoare. , Fisierele F/A cu exemplele din aceasta lectie pot fi descarcate de la6 <. Creare camp .ext 1nput ). Ctilizare .ext$&ent 1nput -. Ctilizare Focus$&ent , 1nput

S-ar putea să vă placă și