Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuții   




Cartea de oaspeți   




Mesaje   





Agora   








Clic aici
PC Report - ultimul numar aparut


IPRO - PC Magazine Romania, Mai 2003
SOLUȚII PENTRU PROGRAMATORII ȘI DESIGNERII WEB

Flash și XML: Tutorial

Ioan Alexandru Lazăr

Am spus în ultimul articol că Macromedia Flash include, începând cu versiunea 5.0, un parser XML. În versiunea MX, acest parser a atins o versiune matură și îl puteți folosi cu mare încredere în aplicațiile dvs.
Și totuși, cum se folosește parser-ul acesta? Vă spun eu: foarte ușor. Urmați acest tutorial, și pe urmă faceți un test încercând să realizați același lucru fără a recurge la XML. Probabil că veți renunța la jumătate. Eu așa am pățit.

Așadar, vom construi un program care va citi date dintr-un fișier XML. Aceste date vor consta într-un număr oricât de mare de perechi [etichetă] - [url]. Programul va citi etichetele și va genera un meniu format din butoane, pe fiecare buton fiind scris un nume, adică una dintre etichete, iar ca link informația pereche a etichetei - [url]. Când veți apăsa pe un buton, veți fi trimis la url-ul asociat etichetei butonului.
Pentru această aplicație, vom folosi un fișier xml pe care îl vom numi meniu.xml, un câmp de text dinamic și un movie-clip pentru fiecare element al meniului. Rezultatul final al tutorialului îl puteți găsi pe CD-ul revistei.

Ce se-ntâmplă
Haideți să vedem ce trebuie să facă aplicația noastră! În primul rând, va avea nevoie de un obiect XML, pe care îl vom crea astfel: meniuXml = new XML(). Apoi, trebuie să poată "număra" elementele meniului nostru, număr pe care îl vom păstra în variabila n. Pentru a aplica etichetele pe butoane, vom folosi un câmp de text dinamic numit itemLabel, care va fi modificat prin secvența

item.itemLabel.text = menuItem[n].attributes.eticheta.

Puteți vedea că eu am folosit aici nume, iar un element este trecut în fișierul xml ca

<buton eticheta="eticheta"
url="http://www.url.ro" />.

În fine, trebuie ca programul să atribuie butonului un url. De asta se ocupă secvența

item.myUrl = menuItem[n].attributes.url.

Urmează crearea fișierului xml din care programul își va lua datele.

Cum facem să se întâmple
Mai întâi vom crea fișierul xml. Folosind Notepad sau alt editor de text (vă recomand Crimson Editor sau UltraEdit), vom crea un fișier care să conțină perechile etichetă-url. Ar trebui să arate cam așa:

< ?xml version="1.0"?>
< meniu>
< buton eticheta="PC Magazine" url="http://www.pcmagazine.ro" />
< buton eticheta="IPRO" url="http://www.pcmagazine.ro/ipro/" />
< buton eticheta="NET Report" url="http://www.netreport.ro/" />
< buton eticheta="PC Concrete" url="http://www.pcconcrete.ro" />
< /meniu>

Evident, puteți folosi orice link-uri doriți. Atenție însă la tagul <buton eticheta> pentru că ne vom folosi de el în ActionScript.

Salvați acest fișier cu numele meniu.xml. Acum vom trece la partea de ActionScript. Creați un fișier Flash, inserați un movie-clip de dimensiuni 150 pe 20 pixeli. În el, desenați o formă geometrică care vă place mai mult - elipsă, dreptunghi, în fine, orice vreți, numai să semene cât de cât a buton. Și tot acolo creați și un câmp de text dinamic căruia îi vom da, în caseta Instance Name, numele itemLabel. Aveți grijă ca acest câmp de text să se afle deasupra oricărui desen. Apoi, în caseta Linkage, dați movie-clip-ului pe care tocmai l-am creat numele meniuClip.

OK, cam aici ia sfârșit partea de desenare. Nu puneți nimic în scenă, păstrați totul în Library. În primul cadru-cheie al fișierului tocmai creat vom introduce codul, care e foarte-foarte scurt. Adică:

meniuXml = new XML();
meniuXml.ignoreWhite = true;
meniuXml.onLoad = function() {
menuItem = this.firstChild.childNodes;
for (var n=0; n<menuItem.length; n++) {
item = _root.attachMovie("meniuClip", "meniuClip" + n, n);
item._x = 0;
item._y = 20*n;
item.itemLabel.text = menuItem[n].attributes.eticheta;
item.myUrl = menuItem[n].attributes.url;
item.onRelease = function() {
getURL(this.myUrl,"_blank");
}
}
}
meniuXml.load("meniu.xml");

Două lucruri vă sunt probabil neclare, așa că le voi explica imediat.

menuItem = this.firstChild. childNodes; Aruncați o privire peste fișierul XML. Vă veți da seama că fiecare pereche etichetă-url este o subdiviziune (copil -"child") a tagului <meniu>. Fiecare pereche conține informația de care e nevoie, iar această instrucțiune spune parser-ului unde se află informația de care e nevoie.

Instrucțiunea for (var n=0; n<menuItem.length; n++) calculează câte elemente are meniul și repetă execuția instrucțiunilor incluse în ea de tot atâtea ori. Altfel spus: citește primul element și îl desenează (de aceea am folosit un ciclu "for"). Trece la al doilea, și tot așa până la ultimul. Când a ajuns la ultimul, îl desenează și pe acesta, dar nu trece mai departe pentru că își dă seama că nu mai există elemente. E clar, nu?

Încercați să testați scena. Merge? Nu? Verificați unde ați salvat fișierul xml: trebuie să fie în același director cu fișierul flash (în cazul nostru, fișierul se numește "meniu.xml"). Verificați dacă ați făcut referirile corecte (că nu ați scris, de exemplu, item.itemLabel.text = menuItem[n].attributes.name în loc de item.itemLabel.text = menuItem[n].attributes.nume. Trebuie să meargă... mie mi-a mers :).

În orice caz, ceea ce tocmai ați realizat este un program care citește date dintr-un fișier xml și le mai și folosește pentru ceva util.

Mai mult
Mai puteți găsi o serie de tutoriale pe tema Flash-XML la Flashkit (www.flashkit.com). Înainte de a încerca să faceți ceva foarte, foarte serios ar fi bine să citiți cu atenție documentația FlashMX cu privire la integrarea XML-Flash. Dacă nu aveți documentația FlashMX, o puteți găsi pe situl Macromedia (www.macromedia. com). Acum, dacă vă place atât de mult XML, puteți încerca să scrieți un MP3 player. Așa, ca temă pentru acasă :).
Nu e greu!


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2002 Agora Media.

[email protected]

LG - LifeŽs Good

www.agora.ro

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro