Documente Academic
Documente Profesional
Documente Cultură
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.
=. 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.
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.
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);
, 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!
> , 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.
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.
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.
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'!.
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
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.
, 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
, Daca '&ar<' este egal cu '&ar)', &a fi apelata 'oFunctie(!', in caz contrar este executata 'altaFunctie(!'.
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.
&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.
"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
, 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"
, 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
>. !+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
, 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
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
>. -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
// %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
prede2inite , care sunt incluse direct in limba ul de programare (cum e de exemplu 'trace(!, stop(!, pla0(!, ...'!.
, '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 '¶m1, .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"
, /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
, 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!.
, 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'.
, 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
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
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
, 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;
*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
)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>
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 <!.
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>< !.
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!.
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!
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
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
, "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.
"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.
// R
, 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 .
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
, 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.
, '#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&
, 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,'
, 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;
, 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.
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.
, '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.
// 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.
, $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
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
X/U@0*!N , declanseaza e&enimentul cand butonul e apasat. X/U@G" , declanseaza e&enimentul cand apasarea butonului este eliberata.
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.
$ , 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
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
// 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 = .';
, 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'.
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.
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