IPRO - PC Magazine Romania, 2002
Comunitatea experţilor şi a cititorilor PC Magazine
- Internet PRO
FLASH Components:
Marea revelaţie din FLASH MX
Ioan Alexandru
Lazăr
Oricine a lucrat în FLASH în ultimul timp cunoaşte probabil lucrul cu funcţii.
Funcţiile pot avea parametri, care să ,,reglementeze" acţiunile lor. În acelaşi
fel, Movie-Clip-urile pot fi ,,parametrizate" pentru a defini acţiunile lor.
Aşa de exemplu, se pot stabili unele valori ale variabilelor din cadrul unor
movie-clip-uri. De fapt, ne putem gândi la Movie-Clip-uri ca la animaţii parametrizate.

FLASH Components reprezintă movie-clip-uri foarte complexe, care au parametri
definiţi în codul ActionScript. Aceşti parametri pot fi modificaţi împreună
cu opţiuni suplimentare, în timpul execuţiei programului. În general, componentele
Flash se pretează foarte bine pentru construirea unor elemente de interfaţă
(cine a lucrat în FLASH 3 sau 4 ştie ce chin însemnă să setezi zeci şi zeci
de variabile şi parametri pentru fiecare buton radio sau bară de derulare),
dar se pot utiliza în general pentru orice movie-clip care este folosit foarte
des într-un program, şi care necesită schimbarea multor parametri în timpul
execuţiei.
O tentativă de introducere a flash components a apărut încă de la Flash 5, prin
SmartClips. Problema acestora era însă că nu prea se integrau în ,,tema generală"
a ActionScript, erau destul de greu de implementat şi de aceea nu au prea fost
folosite de către utilizatorii flash.
FLASH MX vine cu şapte Components (le vom numi componente pe parcursul articolului)
predefinite (pe care probabil că le ştiţi deja dacă aţi lucrat cu Visual Basic).
Este vorba de ScrollBar, ComboBox, ListBox, PushButton, RadioButton, ScrollBar
şi ScrollPlane. Aceste componente sunt denumite generic FLASH UI Components,
pentru că au ca aplicaţie evidentă realizarea de interfeţe grafice.
Dar nu vă gândiţi că flash components înseamnă numai aceste elemente de interfaţă.
În general, flash components reprezintă o soluţie excelentă pentru a parametriza
orice fel de movie-clip-uri. Aplicaţii pentru flash components se pot găsi,
de exemplu, pentru realizarea de formulare. De fapt, în cazul formularelor,
folosirea componentelor vă scuteşte de multe ore de muncă pentru cazul în care
cei care completează formularul pot folosi unele elemente de evidenţiere a textului-scris
cu bold sau italic-cazul forumurilor unor site-uri realizate complet în flash.
De asemenea, ele se pot folosi pentru modificări dinamice. De exemplu, în momentul
în care un film ajunge la un anumit cadru, el poate declanşa o ,,reacţie în
lanţ", care să modifice proprietăţile mai multor obiecte din scenă, cu un volum
mult, mult mai mic de cod şi de lucru.
De exemplu...
Pentru a ilustra cât mai bine ce înseamnă flash components am găsit un editor
de text la adresa www.flashcomponent.com/.
Îl puteţi descărca de pe situl PC Magazine, de la adresa: www.pcmagazine.ro/ipro/texteditor.zip.
În acest articol, programul este folosit pe post de cobai, aşa că ar trebui
să vă uitaţi peste sursă. Acest editor de text foloseşte atât componente flash
UI, cât şi o serie de componente realizate de către autorul programului. Astfel,
programul permite scrierea de text şi aplicarea de formatări, totul folosind
flash components.
Cum este realizat acest efect? Ei bine, fiecare buton, movie-clip, chiar şi
textul, au proprietăţi (parametri) definiţi. Aceştia se pot schimba atunci când
userul activează un buton (de exemplu, butonul de aliniere la dreapta). În momentul
în care este apăsat butonul de aliniere la dreapta, nu este încărcat un întreg
frame care să conţină textul aliniat la dreapta (imaginaţi-vă ce dimensiuni
ar avea filmul...şi mai ales imaginaţi-vă cât ar fi trebuit să lucraţi la asta).
În schimb, pur şi simplu sunt modificaţi parametri movie-clip-ului care conţin
textul, ceea ce are ca efecte micşorarea timpului de lucru, dar şi micşorarea
sensibilă a dimensiunilor filmului, în forma lui finală. Şi asta în vreo 300
de linii cât are editorul (oricum, muuuult mai puţin decât un editor în C++
sau VisualBasic)
Cum se programează...
Sintaxa ActionScript este, în principal, apreciată, pentru că este foarte clară,
şi nu voi insista asupra ei. În schimb, voi prezenta elementele particulare
pentru flash components.
Astfel, pentru a realiza o componentă, se trece prin trei faze: definirea constructorului
pentru clasă, definirea metodelor clasei, şi apoi conectarea ei (adică legarea
clasei cu movie-clip-ul), codul ActionScript necesar fiind inclus între #initclip
şi #endinitclip.
function TextEditorClass () defineşte constructorul pentru clasa TextEditor.
Atenţie însă! În momentul în care se execută o instrucţiune care conectează
movie-clip-ul la o clasă, Flash reatribuie tipul de movie-clip la clasa cu care
este conectat. Numai că noi vrem totuşi să avem o componentă care să se comporte
ca un movie-clip, de aceea, se foloseşte instrucţiunea:
textEditorClass.prototype = new MovieClip(). Clasa ,,moşteneşte" metodele şi
proprietăţile unui movie-clip, astfel încât să putem folosi asupra unei componente
orice proprietate sau metodă a unui movie-clip. Este obligatoriu ca declaraţia
de moştenire să urmeze constructorului.
Secvenţa:
TextEditorClass.prototype.visibleProp = function () {
this._visible = this.visibleParameter;
}
conţine o funcţie de actualizare. Astfel, atunci când un parametru (în cazul
nostru visibleParameter) a fost modificat, se modifică imediat şi proprietatea
asociată respectivului parametru. În fine, urmează conectarea. Object.registerClass("FTextEditor",
TextEditor Class); Această secvenţă leagă clasa TextEditorClass de movie-clip-ul
identificat ca FTextEditor. Urmează definirea metodelor care vor fi folosite
de program pentru componentă. Asta face, în exemplul nostru, instrucţiunea:
TextEditorClass.prototype.titleUpdate = function () {
this.title_txt = this.titleUpdateParameter;
}
Am folosit această instrucţiune pentru a prezenta sintaxa în general. După definirea
tuturor metodelor, urmează definirea proprietăţilor componentei. Aceasta se
face din fereastra Component Definition, pe care o puteţi accesa printr-un click-dreapta
pe numele componentei din fereastra Library, şi apoi alegerea opţiunii ,,Component
Definition". De aici, puteţi adăuga parametri şi îi puteţi asocia cu o anumită
variabilă. Fiecare variabilă are o valuare implicită şi un tip. Tipurile de
variabile sunt adaptate pentru multimedia, fiind vorba de Array, Object, List,
String, Number, Boolean, Font Name şi Color. Apoi, urmează să adăugăm o metodă
indispensabilă, anume Object.AddProperty.
Metoda addProperty defineşte o proprietate. În momentul în care valoarea proprietăţii
se modifică, este chemată o funcţie care procesează o valoare (în loc să ,,ţină
minte" valoarea într-o variabilă adevărată). Aşa de exemplu, putem defini o
proprietate numită ,,font", care să folosească atribuieFont şi citeşteFont pentru
a atribui un font, respectiv pentru a îl citi. Atunci când un buton, de exemplu,
accesează Font, vom şti că el cheamă funcţiile definite, nu nişte variabile.
De ce? În cazul unei alte implementări, vom avea de actualizat doar funcţiile
de acces pentru ca ceea ce am construit să funcţioneze corect.
Asupra acestei porţiuni nu voi mai insista, pentru că este destul de greu de
explicat (şi de înţeles) în afara unui tutorial. De aceea, iată siturile care
tratează această problemă mai adânc decât aş putea eu să o fac într-un articol:
www.flashcomponents.net
(este un sit consacrat acestei teme, cu o serie lungă de tutoriale şi de explicaţii)
www.flashcomponent.com
(un alt sit consacrat problemei)
www.urbanev.com (există
câteva articole care să trateze FLASH Components, dintre care vi-l recomand
pe cel scris de David Doull, în luna mai 2002)
www.virtual-fx.net (unele
tutoriale pentru FLASH Components)
www.macromedia.com (situl
Macromedia, producătorul FLASH, cu o serie de resurse foarte importante oferite
pentru download - componente, documentaţie, tutoriale etc.)
Soluţii şi probleme legate de Internet
|