Flare facilitează crearea de vizualizări interactive de date
Pentru a începe să vă faceți propriile vizualizări, descărca flare și lucrați prin tutorialul de mai jos. Ai nevoie de mai mult ajutor? Viziteaza forum de ajutor (veți avea nevoie de un SourceForge autentificați-vă pentru a posta).
Flare este un software open source lansat sub o licență BSD, ceea ce înseamnă că poate fi implementat și modificat în mod liber (și chiar vândut pentru $$). Designul lui Flare a fost adaptat de la predecesorul său, un set de instrumente de vizualizare pentru Java.
aplicatii
anunturi
- 2010.10.07: Dezvoltarea Flare a fost deschisă comunității, iar sursa s-a mutat de la SourceForge la o casă nouă pe GitHub. flare 2009.01.24 este încă ultima lansare oficială și (cel puțin pentru moment) tutorialele și documentația o reflectă. Versiunea de dezvoltare pe GitHub conține acum un suport mai bun pentru Flash Player 10, precum și multe alte mici remedieri și modificări.
- 2009.01.24: semnal luminos 2009.01.24 a fost eliberat. Aceasta este o versiune de întreținere cu o serie de remedieri de erori și actualizări. Vezi Note de lansare pentru mai multe detalii. Aceasta este ultima lansare planificată pentru Flash Player 9 — versiunile viitoare vor migra la versiunea 10.
- 2008.07.30: semnal luminos 2008.07.29 a fost eliberat. Aceasta este o versiune majoră care introduce multe caracteristici noi și îmbunătățiri arhitecturale. Vezi Note de lansare pentru mai multe detalii.
- 2008.07.30: semnal luminos 2008.08.08 a fost eliberat. Această versiune include suport îmbunătățit pentru legendă, tranziții denumite, remedieri de erori și o refactorizare pentru a reduce cuplarea și consolidarea claselor de utilitate. Vezi Note de lansare pentru mai multe detalii.
tutorial
Un tutorial pas cu pas pentru a învăța ActionScript și Flare.
Noțiuni de bază
Primul pas este să vă configurați instrumentele de dezvoltare.
- Configurați un mediu de dezvoltare flash funcțional. Există două abordări. Vă recomandăm prima pentru simplitate, dar utilizatorii mai avansați sunt bineveniți să folosească a doua abordare.
- Opțiunea 1 (mai simplă): Instalați Adobe Flex Builder.
- Acesta este un mediu de dezvoltare complet pentru aplicații ActionScript/Flex. Este disponibil pentru toate platformele majore (Windows, Mac, Unix). Utilizatorii care folosesc deja IDE-ul Eclipse pot instala Flex Builder ca plug-in Eclipse.
- Avertismentul privind utilizarea Flex Builder este că este un software comercial și va funcționa doar pentru o perioadă de probă limitată. Cu toate acestea, Adobe oferă licențe gratuite Flex Builder studenților, profesorilor și personalului.
- Opțiunea 2 (mai complicată): Instalați gratuit Flex SDK
- Aceasta va instala compilatoarele de bază ActionScript/Flex:
mxmlc
șicompc
. Puteți apoi să vă configurați propriul mediu de construcție, de exemplu, folosindmake
orant
construiți sisteme. Flare este ambalat cu unbuild.xml
fișier pentru utilizare cu Apache Ant construirea sistemului. Odată ce furnica este instalată, deschidețibuild.xml
fișier într-un editor de text, modificați primele rânduri pentru a indica Flex SDK instalare și apoi utilizațiant
pentru a compila bibliotecile. Utilizăm sarcinile de furnici ale Adobe Labs pentru dezvoltarea Flex. - Avantajul acestei abordări este că tot software-ul este gratuit și nu va expira la tine. Cu toate acestea, pierdeți funcții precum compilarea automată, managementul proiectelor și completarea automată oferite de Flex Builder.
- Aceasta va instala compilatoarele de bază ActionScript/Flex:
- Opțiunea 1 (mai simplă): Instalați Adobe Flex Builder.
- Descărcați bibliotecile prefuse flare.
- Descărcarea este un fișier zip care conține un set de proiecte de bibliotecă ActionScript. Dezarhivați fișierele în directorul principal al spațiului de lucru dacă utilizați Flex Builder. În timpul tutorialului, le vom importa în Flex Builder și le vom folosi pentru a construi vizualizări!
- Software-ul este în prezent o versiune alfa și, prin urmare, sunt de așteptat unele erori și limitări. Vom rezolva problemele cât mai curând posibil, iar linkul de mai sus va indica întotdeauna cea mai recentă versiune.
Introducere în Flash și ActionScript 3
Flash este un mediu grozav pentru grafica interactivă și, odată cu adăugarea recentă a limbajului de programare ActionScript 3, a devenit mult mai puternic și mai eficient. Deși o introducere completă la AS3 depășește scopul acestui tutorial, iată câteva resurse pe care le veți găsi utile:
- Adobe oferă o prezentare generală a AS3, cu link-uri către resurse suplimentare.
- ActionScript esențial 3 de Colin Moock de la O'Reilly publishing este o carte grozavă care vă ajută să începeți. Puteți accesează-l online aici (unele instituții, cum ar fi universitățile, oferă acces gratuit).
- Adobe Flex API Reference este de neprețuit pentru înțelegerea diferitelor clase și metode disponibile. Ne vom concentra doar pe clasele din
flash.*
pachete.
Acest tutorial presupune o familiaritate de bază cu sintaxa și tipurile ActionScript, precum și cu conceptele de programare orientată pe obiecte.
Partea 1: DisplayObjects
Introducere
Flash modelează o scenă vizuală 2D folosind a scenegraf. Obiectele vizuale sunt organizate într-o ierarhie, cu obiectele copil definite în spațiul de coordonate al părintelui. Veți vedea adesea acest scenariu denumit afisare lista atât în documentația Adobe, cât și în cărțile despre programarea Flash.
Nodul din partea de sus a listei de afișare este întotdeauna Stage
obiect. Scena are întotdeauna un singur copil. Aceasta se numește root
, iar toate elementele vizuale sunt sub rădăcină. De obicei, rădăcina este aplicația dvs. Flash reală. Vom reveni la asta în curând.
Toate elementele vizuale care pot fi adăugate la lista de afișare sunt exemple ale DisplayObject
clasă. Subclasele de DisplayObject
include Bitmap
(pentru imagini), TextField
(pentru zonele de text interactiv) și Video
(gândiți-vă la YouTube). Cele mai frecvente cazuri, însă, sunt Sprite
și Shape
clase. Pentru referință, majoritatea acestor clase pot fi găsite în flash.display
pachet (deși în cele din urmă probabil veți găsi flash.text
pachetul de utilizare, de asemenea).
Sprite
clasa este cel mai util obiect vizual general folosit de Flash Player. Sprite-urile sunt obiecte vizuale care conțin atât conținut de desen și pot servi ca container pentru sub-noduri din lista de afișare ( Sprite
subclasele de clasă flash.display.DisplayObjectContainer
clasă). În contrast, cel Shape
clasa poate conține conținut de desen, dar nu poate deține sub-noduri. Ca rezultat, Shapes consumă mai puțină memorie, dar sunt mult mai puțin flexibile. Pentru simplitate, ne vom concentra pe Sprites în acest tutorial.
Creați o nouă aplicație
Mai întâi, să creăm o nouă aplicație Flash. Pentru a face acest lucru, deschideți Flex Builder și asigurați-vă că vă aflați în perspectiva „Flex Development” (deseori accesată făcând clic pe pictograma alb-negru „Fx” din dreapta sus).
În panoul „Navigator” din stânga, faceți clic dreapta pe afișaj și selectați „Nou > Proiect ActionScript”. În dialogul rezultat, tastați „Tutorial” ca nume de proiect, apoi faceți clic pe „Finish”. Acest lucru va crea un nou proiect pentru tine.
Ar trebui să vedeți acum un folder „Tutorial” în panoul „Navigator”. În acest folder, ar trebui să vedeți un fișier numit „Tutorial.as”. Acesta este fișierul principal de aplicație. Deschideți-l, dacă nu este deja deschis.
În interiorul fișierului, veți vedea schelele de bază pentru această clasă:
pachet { import flash.display.Sprite; public class Tutorial extinde Sprite { public function Tutorial() { } } }
Observați că această clasă extinde Sprite
clasă. Deoarece aceasta este clasa noastră principală de aplicație, atunci când rulăm aplicația o instanță a Tutorial
clasa va fi adăugată automat la lista de afișare ca ea root
(unicul și singurul copil al Stage
).
Observați, de asemenea, că un constructor a fost creat automat. Acest constructor va fi apelat la lansarea aplicației. Pentru cei familiarizați cu limbaje de programare precum C, C++ sau Java, constructorul clasei de aplicații acționează ca un main
funcţionează în acele alte limbi.
Cu această nouă schelă pentru aplicații, putem începe să ne jucăm cu obiecte vizuale. Cu toate acestea, există un lucru pe care vrem să-l facem mai întâi. Adăugați o nouă linie direct deasupra declarației de clasă ("public class Tutorial…
”) linie care spune:
[SWF(width="800", height="600", backgroundColor="#ffffff", frameRate="30")]
Această linie definește setările implicite pentru aplicația dvs. (care este compilată și salvată ca fișier .swf în directorul „bin” al proiectului). Mai sus, setăm dimensiunea, culoarea de fundal și rata țintă a cadrelor (în cadre pe secundă) pentru aplicația noastră.
Sprite
Ca toți DisplayObjects
, Sprite
acceptă o serie de proprietăți vizuale imediat din cutie. Aceasta include x
, y
, scaleX
, scaleY
, rotation
, și alpha
proprietăți. Acestea schimbă, respectiv, poziția, dimensiunea, orientarea și transparența unui sprite (și a tuturor copiilor săi! Amintiți-vă, folosim un scenegraph aici).
Cu toate acestea, aceste valori nu înseamnă încă mare lucru, deoarece sprite-urile nu conțin nimic în mod implicit. Vom începe prin a ne desenăm propriul conținut.
Fiecare Sprite are, de asemenea, un graphics
proprietate. Putem folosi acest lucru pentru a desena grafice pentru Sprite
. graphics
proprietatea este o instanță a flash.display.Graphics
clasa, care oferă un număr de comenzi de desen vectorial.
În exemplul de mai jos, facem o serie de lucruri.
- În primul rând, creăm un nou
Sprite
. - În al doilea rând, folosim sprite-urile
graphics
pentru a desena un cerc cu umplutură gri și contur negru.beginFill
setează culoarea și stilul de umplere curent. Primul argument este culoarea, în notație hexadecimal, iar al doilea argument este valoarea alfa, care variază de la 0 pentru complet transparent la 1 pentru complet opac.lineStyle
setează culoarea și stilul curent al conturului. Primul argument este lățimea liniei, al doilea argument este culoarea.drawCircle
desenează un cerc cu raza 10 în punctul 0,0 din spațiul de coordonate al sprite-ului nostru.
- În al treilea rând, adăugăm sprite-ul ca copil al aplicației noastre principale (a
Tutorial
sprite). - În al patrulea rând, setăm
x
șiy
poziţia spiritului nostru. - În al cincilea rând, adăugăm o ieșire de depanare.
trace
imprimă un șir pe consolă. Această ieșire apare numai atunci când rulați aplicația în modul „depanare”.
Iată codul:
pachet { import flash.display.Sprite; [SWF(width="800", height="600", backgroundColor="#ffffff", frameRate="30")] public class Tutorial extinde Sprite { public function Tutorial() { var sprite:Sprite = new Sprite() ; sprite.graphics.beginFill(0xcccccc, 0.5); sprite.graphics.lineStyle(1, 0x000000); sprite.graphics.drawCircle(0, 0, 10); this.addChild(sprite); sprite.x = 50; sprite.y = 50; trace("sprite-ul nostru este la: "+sprite.x+", "+sprite.y); } } }
Rulați aplicația (dați clic dreapta pe „Tutorial.as” și selectați „Run As > Flex Application”). Ar trebui să vedeți un cerc gri cu contur negru în colțul din stânga sus, centrat pe punctul 50, 50. Dacă rulați aplicația în modul de depanare (selectați „Debug As > Flex Application”), ar trebui să vedeți și șirul „nostru. sprite este la: 50, 50” în consola de ieșire.
Sprites imbricați
Acum să facem scena noastră puțin mai interesantă. Să începem prin a muta codul nostru de generare Sprite la o nouă metodă. Vom adăuga această metodă la clasa noastră:
funcția privată createCircle(x:Number, y:Number):Sprite { var sprite:Sprite = new Sprite(); sprite.graphics.beginFill(0xcccccc, 0.5); sprite.graphics.lineStyle(1, 0x000000); sprite.graphics.drawCircle(0, 0, 10); sprite.x = x; sprite.y = y; returnează sprite; }
În continuare, înlocuim codul din constructorul nostru. Mai întâi, creăm un nou sprite numit container pe care îl vom folosi pentru a ține o colecție de cercuri. O plasăm în centrul scenei noastre. În al doilea rând, folosim o buclă pentru a crea o grămadă de cercuri. Aici, aliniem cercurile simetric în jurul punctului 0,0 al containerului părinte. Noul nostru constructor arată acum astfel:
public function Tutorial() { var container:Sprite = new Sprite(); container.x = 400; container.y = 300; this.addChild(container); pentru (var i:int=0; i<10; ++i) { var x:Number = (i/5<1 ? 1 : -1) * (13 + 26 * (i%5)); container.addChild(createCircle(x, 0)); } }
Rulați noua versiune a aplicației. Ar trebui să vedeți o linie de zece cercuri în mijlocul aplicației.
Acum putem modifica containerul pentru a actualiza toate cercurile din el. Încercați să vă jucați cu setarea diferitelor variabile vizuale pe sprite-ul containerului. De exemplu, modificați x
, y
, scaleX
, scaleY
, rotation
, și alpha
proprietăți.
alte subiecte
Puteți face mult mai multe cu opțiunile de bază oferite de Flash. Din păcate, sunt puțin peste ceea ce avem timp pentru noi aici. Unele lucruri de explorat includ filtre de imagine (vezi flash.filters
pachet), care vă permit să adăugați efecte vizuale pentru a afișa obiecte folosindu-le filters
proprietate și diferitele opțiuni disponibile în flash.display.Graphics
clasă, inclusiv stiluri de umplere și linie și multe alte rutine de desen 2D.
Partea 2: Animații
Acum că putem crea obiecte vizuale, este timpul să începem să le dăm puțină viață. Flare include flare.animate
pachet pentru a facilita acest lucru. În primul rând, trebuie să importam bibliotecile flare pentru a le utiliza în Flex Builder.
Importul bibliotecilor
Înainte de a continua, asigurați-vă că aveți bibliotecile flare încărcate ca proiecte în Flex Builder. Ar fi trebuit să fi dezarhivat deja fișierele flare în directorul principal al spațiului de lucru Flex Builder. Următorul pas este să le importați în mediul Flex Builder:
- Asigurați-vă că vă aflați în perspectiva „Dezvoltare Flex”.
- Faceți clic dreapta pe panoul de navigare din stânga.
- Selectați „Importați...” în meniul pop-up.
- În caseta de dialog, selectați „General > Proiecte existente în spațiul de lucru” și faceți clic pe butonul „Următorul”.
- Utilizați widget-urile „Selectați directorul rădăcină” pentru a naviga la directorul spațiului de lucru Flex Builder
- Ar trebui să vedeți acum proiectele flare listate în panoul „Proiecte:”.
- Selectați proiectele „flare” și „flare.demos” și apoi faceți clic pe butonul „Finish”.
Ar trebui să vedeți acum proiectele flare în panoul Navigator. Acum puteți răsfoi codul sursă pentru fiecare bibliotecă și pentru demonstrații.
Prezentare generală a bibliotecii flare
Iată o prezentare rapidă a setului de instrumente flare. În interiorul flare
proiect, căutați în dosarul „src/flare”. Veți găsi o serie de pachete care oferă diferite caracteristici:
analytics
: operatori pentru calculul statisticilor și analiza dateloranimate
: instrumente pentru crearea de animațiidata
: metode de citire și scriere a seturilor de datedisplay
:DisplayObject
tipuri care le extind pe cele furnizate deflash.display
flex
: un înveliș pentru încorporarea vizualizărilor Flare în aplicațiile Flexphysics
: un motor fizic pentru efecte fizice sau aspect direcționat de forțăquery
: un procesor de interogări pentru obiectele ActionScriptscale
: clase pentru manipularea scalelor de date, cum ar fi scalele liniare, logare și de timputil
: un set de clase de utilitate care oferă funcții necesare în mod obișnuitvis
: componentele și operatorii de vizualizare flare
Există și flare.demos
proiect, care oferă o serie de exemple despre cum să creați componente Flare.
Importul unei biblioteci în cadrul altui proiect
Pentru a utiliza flare în propriile proiecte, va trebui să actualizați setările proiectului. Iată cum să faci asta:
- În panoul Navigator, faceți clic dreapta pe folderul de sus al proiectului „Tutorial”.
- Faceți clic pe „Proprietăți” în meniul contextual
- În dialogul rezultat, faceți clic pe „ActionScript Build Path” în panoul din stânga (ar trebui să fie al treilea element din partea de sus)
- Faceți clic pe fila „Calea bibliotecii” din panoul din dreapta
- Faceți clic pe butonul „Adăugați proiect”.
- Ar trebui să vedeți acum o listă de proiecte, inclusiv flare.
- Selectați „flare” și apoi faceți clic pe „OK”
Acum ați adăugat bibliotecile flare la proiectul dvs. și puteți utiliza oricare dintre clasele pe care le oferă.
Un lucru de remarcat despre compilatorul Flex - în mod implicit, include doar clasele pe care le utilizați de fapt în aplicația dvs. Deci, chiar dacă importați o bibliotecă foarte mare, dimensiunea fișierului final .swf poate fi totuși destul de mică. Cu toate acestea, aveți grijă că acest lucru poate cauza probleme dacă utilizați reflectarea pentru a efectua încărcarea dinamică a clasei în aplicația dvs. (o caracteristică mai avansată care nu este acoperită în acest tutorial).
Animație de bază: interpolare, secvență și paralelă
Ok, acum hai să animam! The flare.animate.Transition
clasa este clasa de bază pentru toate animațiile. Subclase importante de Transition
sunt Tween
, Sequence
, și Parallel
tranziții. Tween-urile sunt folosite pentru a anima proprietățile unui singur obiect. Secvențele sunt folosite pentru a rula o serie de animații în ordine. Tranzițiile paralele rulează o colecție de tranziții simultan. Să începem cu Tween.
Interpolarea proprietăților obiectului
Elementele de bază ale clasei Tween sunt simple: luăm un obiect, dăm un set de valori de proprietate pe care am dori să le schimbăm în timp și specificăm durata de timp pentru acea modificare. Folosind aplicația Tutorial din partea 1, să rotim obiectul container. Adăugați următoarea linie la sfârșitul constructorului clasei Tutorial:
var tween:Tween = new Tween(container, 3, {rotation:360}); tween.play();
De asemenea, asigurați-vă că aveți o nouă instrucțiune de import în partea de sus a clasei dvs., astfel încât compilatorul să știe despre ce vorbiți. Adăugați aceasta la lista de importuri:
import flare.animate.Tween;
(NOTĂ: uneori, Flex Builder va adăuga automat o instrucțiune de import pentru dvs. pe măsură ce introduceți un nou nume de clasă. Dacă nu, o altă tehnică este să plasați cursorul text la sfârșit a noului nume de clasă și tastați „Ctrl-Space” – aceasta ar trebui să creeze un nou import pentru dvs. pentru clasă.)
Acum rulați aplicația - punctele ar trebui să se rotească într-un cerc pe o perioadă de 3 secunde.
Iată ce face constructorul Tween:
- Primul argument este obiectul ale cărui valori ar trebui să fie interpolate
- Al doilea argument este durata animației, în secunde
- Al treilea argument este o instanță Object care listează proprietățile de animat și valorile țintă ale acestora.
- Numele proprietăților trebuie să se potrivească exact cu proprietățile obiectului de intrare.
- Proprietățile imbricate sunt permise, dar trebuie incluse între ghilimele. De exemplu,
{“data.profit”:50}
este o intrare legală dacă obiectul de intrare are o proprietate numită data care, la rândul său, are o proprietate numită profit.
play
metoda rulează apoi animația. The play
metoda poate fi apelată și cu un singur parametru boolean care indică dacă se rulează sau nu animația în sens invers.
Poate ați observat că animația de rotație prezintă o oarecare accelerație. Acest lucru se datorează faptului că setarea implicită pentru Tween
Instanțe este de a folosi animația „slow-in slow-out”. Puteți controla aceste comportamente folosind Easing
funcții. Aceste funcții iau ca intrare progresul curent al animației ca o fracție între 0 și 1. Apoi returnează o fracție de progres manipulată pentru a schimba ritmul animației, adesea într-un mod neliniar.
Pentru a elimina relaxarea (adică, utilizați o funcție liniară de relaxare) puteți scrie: tween.easing = Easing.none
. Doar asigurați-vă că importați flare.animate.Easing
clasa din partea de sus a fișierului.
Simțiți-vă liber să experimentați cu alte funcții de relaxare. De exemplu, funcțiile de relaxare pot implica relaxarea în (manipulați numai începutul animației), relaxarea (manipulați numai sfârșitul animației) sau ambele. De exemplu, încercați asta: tween.easing = Easing.easeOutBounce
. Acest lucru ar trebui să facă să sară rotația la sfârșit.
Înainte de a continua, încercați să animați alte proprietăți ale containerului, cum ar fi poziția, scara sau valorile alfa.
Animații compuse
Sequence
și Parallel
orele vă permit să grupați animațiile împreună. Sequence rulează un set de animații una după alta. De exemplu, încercați asta:
var t1:Tween = new Tween(container, 1, {y:100}); var t2:Tween = new Tween(container, 1, {scaleX:2}); var t3:Tween = new Tween(container, 1, {y:300}); var t4:Tween = new Tween(container, 1, {scaleX:1}); var seq:Sequence = new Sequence( new Parallel(t1, t2), new Parallel(t3, t4) ); seq.play();
De asemenea, va trebui să adăugați câteva instrucțiuni de import noi în partea de sus a fișierului:
import flare.animate.Parallel; import flare.animate.Sequence;
Acest lucru creează patru tweens: t1
, t2
, t3
, și t4
. Apoi creează două tranziții paralele care rulează t1
și t2
împreună și alergați t3
și t4
împreună. Tranzițiile paralele sunt apoi executate una după alta într-o secvență. În acest fel, este ușor să construiești animații mai complicate.
Pentru animații compozite mai avansate, aruncați o privire la FlareLogo
și flare.demos.Animation
clase în flare.demos
proiect.
Animație în loturi cu tranzitori
Utilizarea Tween
, Parallel
, și Sequence
clase, puteți face orice număr de tranziții animate. Cu toate acestea, atunci când ai de-a face cu colecții mari de obiecte (obișnuite în vizualizare) poate fi o chinuri să gestionezi manual un set la fel de mare de tweens. În plus, ar trebui să fie ușor să rulați rutine separate pentru codificarea proprietăților vizuale precum aspectul, culoarea, dimensiunea, forma și să nu vă faceți griji cu privire la gestionarea animației. Poate doriți să animați modificările sau poate doriți o actualizare statică. În orice caz, ar trebui să puteți reutiliza același cod pentru alocarea de valori.
Pentru a răspunde acestor preocupări, Flare oferă Transitioner
clasă. Tranzitorii simplifică procesul de creare a animațiilor pentru colecțiile de obiecte. Pur și simplu luați un obiect și setați proprietățile dorite unul câte unul. În culise, trecetorul va genera și reutiliza automat interpolarile necesare pentru a modela animația completă. În plus, dacă nu se dorește animația, transitorul poate fi configurat pentru a seta în schimb valorile proprietăților imediat. Pe scurt, trecerea oferă un strat de indirect pentru actualizarea proprietăților obiectului – aceste actualizări pot fi colectate și apoi animate sau aplicate imediat.
Iată un exemplu simplu de utilizare a unui dispozitiv de tranziție în aplicația noastră tutorial.
var t:Transitioner = nou Transitioner(2); pentru (var j:int=0; j
Acest exemplu animă toate sprite-urile din container
la un nou aleatoriu y
poziție și factor de scară verticală aleatoriu. Mai întâi creăm un nou Transitioner
care ar trebui să creeze o animație de 2 secunde. Apoi parcurgem fiecare sprite copil și folosim trecerea pentru a seta proprietățile la Tween.
Al Tranziției $
operatorul indică faptul că dorim să setăm o valoare țintă pentru obiectul de intrare. În mod implicit, fie un nou Tween
este creat sau existent Tween
este găsit pentru articolul curent. The $
operatorul returnează apoi un obiect pe care să seteze proprietatea țintă a interpolarii.
În plus, tranzitorii pot fi folosiți pentru a crea tranziții statice (neanimate). Dacă al unui tranzitor immediate
proprietatea este setată la true, nu va crea interpolari noi. În schimb, operatorul $ va returna pur și simplu valoarea de intrare. Aceasta înseamnă că puteți crea metode care să actualizeze valorile utilizând un dispozitiv de tranziție, iar apoi să controlați dacă doriți sau nu să fie actualizate acele valori. „Modul imediat” standard Transitioner
este preluat folosind static Transitioner.DEFAULT
proprietate. În acest fel, nu trebuie să alocați un nou Transitioner
atunci când se efectuează actualizări imediate.
Elementele de tranziție sunt utilizate pe scară largă pe tot parcursul flare.vis
pachet, permițând designerilor de vizualizare să controleze ce actualizări ar trebui animate și cum.
Partea 3: Vizualizări
Încărcare date
Reprezentarea de bază a datelor pentru Flare utilizează pur și simplu tipurile de date Flash încorporate: Object
și Array
. De exemplu, un tabel de date poate fi reprezentat doar ca o matrice de obiecte, fiecare obiect conținând numele și valorile fiecărui câmp de date. Deși sunt posibile reprezentări mai eficiente, această abordare oferă cea mai mare flexibilitate, profitând și de convențiile de dezvoltare Flash existente.
Pentru a încărca date în Flash player, există o serie de abordări. O abordare simplă este să vă încorporați datele în aplicația în sine. În acest fel, datele sunt descărcate împreună cu aplicația, ceea ce este bine pentru seturile de date statice. De exemplu, puteți utiliza notația obiectului ActionScript pentru a defini setul de date direct ca variabilă:
var data:Array = [ {id:"Q1", vânzări:10000, profit:2400}, {id:"Q2", vânzări:12000, profit:2900}, {id:"Q3", vânzări:15000, profit :3800}, {id:"Q4", vânzări:15500, profit:3900} ];
Cu toate acestea, în multe cazuri, veți dori să vă încărcați datele în mod dinamic, fie dintr-o pagină web (puteți folosi JavaScript în browser pentru a trece valori în Flash), fie de pe un server de pe internet. Există multe abordări pentru a face acest lucru și ar trebui să alegeți ceea ce funcționează cel mai bine pentru aplicația dvs. De exemplu, ActionScript oferă tipuri de date și sintaxă suplimentare pentru a lucra cu acestea XML date folosind ECMAScript pentru XML (E4X) standard.
Flare oferă, de asemenea, unele utilitare pentru încărcarea seturilor de date externe. Acceptă încărcarea datelor de pe orice server de pe internet și conversia acelor date în obiecte ActionScript interne. Formatele de fișier acceptate în prezent sunt text delimitat de tabulatori („filă”, un format de fișier standard pentru exportul de date din instrumente precum Excel), Notare obiect JavaScript („json”, un format comun de date pentru aplicațiile web) și GraphML („graphml”, an XML format pentru reprezentarea rețelelor cu noduri și muchii).
Datele de la distanță sunt încărcate prin flare folosind flare.data.DataSource
clasă. Iată un exemplu de utilizare pentru a încărca un fișier de date delimitat de tabulatori:
var ds:DataSource = new DataSource( "http://flare.prefuse.org/data/test.tab.txt", "tab" ); var loader:URLLoader = ds.load(); loader.addEventListener(Event.COMPLETE, function(evt:Event):void { // funcție pentru a gestiona datele odată ce încărcarea este completă var ds:DataSet = loader.data ca DataSet; // acum faceți ceva cu datele... } );
DataSource
constructorul are două argumente necesare: adresa URL a setului de date și un șir care indică formatul fișierului. În prezent, formatele acceptate sunt „tab” (delimitat de tab-uri), „json” (JavaScript Object Notation) și „graphml” (GraphML).
Pentru seturile de date a căror schemă (numele și tipurile de date ale câmpurilor) poate fi neclară, există, de asemenea, un al treilea argument de constructor, opțional, care necesită un DataSchema
tip. A se vedea flare.data.DataSchema
și flare.data.DataField
cursuri pentru mai mult. Schema poate fi utilă pentru a vă asigura că valorile datelor sunt denumite corect (de exemplu, pentru un fișier delimitat de file, fără un rând de antet) și convertite în tipurile de date adecvate (de exemplu, pentru datele JSON în care valorile numerice au fost împachetate între ghilimele).
Pentru a încărca efectiv datele, este apelată metoda de încărcare DataSource, returnând a flash.net.URLLoader
instanță. Încărcătorul poate fi folosit pentru a urmări progresul descărcării (de exemplu, dacă doriți să furnizați o bară de progres) și oferă un eveniment de notificare când descărcarea este finalizată. În exemplul de mai sus, adăugăm un ascultător de evenimente pentru a fi notificat când se finalizează descărcarea. The DataSource
va analiza automat datele de intrare, le va mapa în obiecte ActionScript și va stoca rezultatele într-un flare.data.DataSet
obiect. DataSet
clasa poate reprezenta atât date de tabel, cât și date de rețea (nod/margine).
Crearea și gestionarea obiectelor vizuale
Acum am dori să vizualizăm un set de date. Pentru a face acest lucru, mapăm înregistrările individuale de date în elemente vizuale. Flare oferă un set de obiecte vizuale pentru a reprezenta datele. Iată o prezentare generală a claselor de bază oferite de flare.vis.data
pachet.
DataSprite
: clasă de bază pentru sprite-uri care reprezintă vizual date.DataSprite
este o subclasă a Flash Player-uluiSprite
clasă.DataSprite
include adata
proprietate în care este stocat tuplul de date (un obiect ActionScript) și oferă, de asemenea, variabile vizuale suplimentare în afara celor acceptate de sprite-urile de bază, inclusiv câmpuri de culoare, formă și dimensiune și suport pentru setarea pozițiilor în coordonate polare.NodeSprite
:DataSprite
instanță reprezentând un nod. Acesta este tipul implicit utilizat pentru vizualizarea datelor.NodeSprite
Instanțele pot fi conectate în cadrul rețelei sau structurilor arborescente prinEdgeSprite
instanțe.EdgeSprite
:DataSprite
instanță reprezentând o margine. UnEdgeSprite
conectează douăNodeSprites
. Nodurile sunt accesibile prin intermediulsource
șitarget
proprietăți.EdgeSprites
sunt folosite pentru a crea grafice și arbori, precum și pentru a reprezenta linii, cum ar fi în graficele cu serii de timp.
De obicei, NodeSprites și EdgeSprites sunt create și stocate în flare.vis.data.Data
clasa, care gestionează toate elementele vizuale pentru o singură vizualizare. The Data
clasa furnizează metode pentru crearea de noi obiecte vizuale pentru tuplurile de date și pentru reprezentarea unei structuri grafice.
Data
clasa oferă, de asemenea, metode pentru parcurgerea și actualizarea elementelor de date conținute. The nodes
și edges
proprietățile returnează liste cu nodurile și marginile conținute în date. Fiecare dintre aceste liste include a visit
metodă care vă permite să treceți o funcție care va fi apoi apelată cu fiecare nod sau margine. De asemenea setProperty
și setProperties
metodele vă permit să setați valorile proprietăților pentru toate nodurile sau marginile simultan. Aceste metode iau opțional a Transitioner
ca argument, astfel încât să puteți anima actualizarea proprietății.
De exemplu, următorul cod are ca rezultat o animație de o secundă în care culoarea liniei pentru toate nodurile este setată la albastru. (Rețineți că notația hexagonală pentru DataSprite
valorile de culoare includ canalele alfa, precum și roșu, verde, albastru).
data.nodes.setProperty("lineColor", 0xff0000bb, nou Transitioner(1)).play();
Listele de noduri și margini acceptă și valorile implicite ale proprietăților, folosind setDefault
, setDefaults
, removeDefault
, și clearDefaults
metode. Valorile implicite vor fi setate pe un nod sau margine nou creat folosind clasa de date. addNode
or addEdgeFor
metode.
Tree
clasa este o subclasă a Data
, specializat pentru a reprezenta mai degrabă un arbore decât un grafic general. The Data
clasa suportă crearea automată a unui Tree
exemplu prin calcularea arborilor de acoperire ai unui grafic general. O serie de metode de creare a arborelui de întindere – inclusiv algoritmii de arbore de întindere mai întâi lățimea, adâncimea mai întâi și minim – pot fi transmise ca parametru. Aceste calcule sunt efectuate folosind flare.analytics.graph.SpanningTree
clasă.
Pentru a crea de fapt obiecte nod și margini, folosim addNode
și addEdgeFor
metode.
addNode
ia un tuplu de date de intrare (anObject
) și creează un nouNodeSprite
pentru vizualizarea acestor date.addEdgeFor
ia două existenteNodeSprites
și adaugă unEdgeSprite
conectându-le. De asemenea, metoda exceptează opțional un tuplu de date (din nou, anObject
reprezentând orice câmpuri de date) pentru margine.
Iată un exemplu simplu de creare NodeSprites
pentru un set de date tabelar, presupunând că avem o matrice de obiecte de date:
var list:Array; // o serie de obiecte de date pe care le-am încărcat deja var data:Data = new Data(); // un nou container de date pentru fiecare (var o:Object in list) { data.addNode(o); }
Rezultatul este a Data
obiect populat cu vizual DataSprite
(noduri sau margini) instanțe.
În practică, nu trebuie întotdeauna să populați manual datele vizualizate. Pentru a crea un Data
obiect pentru vizualizarea unui set de date încărcat, puteți utiliza adesea o metodă convenabilă. The Data.fromArray()
funcția creează a Data
exemplu pentru datele tabulare stocate ca o matrice de obiecte ActionScript, în timp ce Data.fromDataSet()
metoda creează în mod similar a Data
instanță dintr-un încărcat DataSet
obiect.
Construirea unei vizualizări
Acum să punem toate acestea împreună pentru a începe să facem vizualizări. The Visualization
clasa reprezintă o singură vizualizare, inclusiv mărcile vizuale (stocate în a Data
exemplu) și topoare. Pentru a crea o vizualizare, încărcăm un set de date, adăugăm datele la o vizualizare și setăm operatori care determină modul de vizualizare a datelor. Iată un exemplu. Priviți mai întâi codul, apoi citiți mai departe pentru a înțelege ce face fiecare parte.
pachet { import flare.data.DataSet; import flare.data.DataSource; import flare.scale.ScaleType; import flare.vis.Visualization; import flare.vis.data.Data; import flare.vis.operator.encoder.ColorEncoder; import flare.vis.operator.encoder.ShapeEncoder; import flare.vis.operator.layout.AxisLayout; import flash.display.Sprite; import flash.events.Event; import flash.geom.Rectangle; import flash.net.URLLoader; [SWF(width="800", height="600", backgroundColor="#ffffff", frameRate="30")] public class Tutorial extinde Sprite { private var vis:Visualization; funcția publică Tutorial() { loadData(); } funcție privată loadData():void { var ds:DataSource = new DataSource( "http://flare.prefuse.org/data/homicides.tab.txt", "tab"); var loader:URLLoader = ds.load(); loader.addEventListener(Event.COMPLETE, function(evt:Event):void { var ds:DataSet = loader.data as DataSet; visualize(Data.fromDataSet(ds)); }); } function private visualize(data:Data):void { vis = new Vizualizare(date); vis.bounds = new Rectangle(0, 0, 600, 500); vis.x = 100; vis.y = 50; addChild(vis); vis.operators.add(new AxisLayout("data.date", "data.age")); vis.operators.add(new ColorEncoder("data.cause", Data.NODES, "lineColor", ScaleType.CATEGORIES)); vis.operators.add(new ShapeEncoder("data.race")); vis.data.nodes.setProperties({fillColor:0, lineWidth:2}); vis.update(); } } }
Să ne uităm la fiecare metodă.
Constructorul este simplu: apelează doar la loadData
metodă.
loadData
metoda creează o nouă sursă de date și o încarcă folosind metodele descrise mai devreme. În acest caz, setul de date este raportat omucideri în județul Los Angeles în 2007, stocate în format delimitat de tabulatori. Când încărcarea este completă, tuplurile de date încărcate sunt adăugate la a Data
instanță folosind fromDataSet
metoda confortului. Sub capotă, acest lucru are ca rezultat crearea NodeSprites
pentru vizualizarea fiecărui element de date. În cele din urmă, cel visualize
se numeste metoda.
visualize
metoda setează vizualizarea. Iată ce se întâmplă la fiecare pas:
- Partea 1: Inițializare
- O nouă vizualizare este creată pentru date
- Noi stabilim limitele pentru vizualizare. Aceasta determină zona de aspect.
- Am setat
x
șiy
poziția vizualizării noastre și adăugați vizualizarea la lista de afișare.
- Partea 2: Specificarea codificărilor vizuale
- Folosim un aspect de axă, plasând „data” pe axa x și „vârsta” pe axa y. The
AxisLayout
operatorul configurează automat axele pentru vizualizare. Folosim sintaxa „data.date” pentru a desemna variabilele de date, deoarece acestea se află în interiorulNodeSprite
„sdata
proprietate. - Adăugăm o codificare de culoare, astfel încât culoarea liniei unui nod să reprezinte variabila „cauza” (cauza morții). De asemenea, îi spunem codificatorului de culoare că valorile variabilei „cauză” reprezintă categorii (
ScaleType.CATEGORIES
). Codificatorul de culori va folosi aceste informații pentru a alege automat o paletă de culori adecvată. După cum vom vedea în curând, vă puteți oferi și propria paletă de culori. - Adăugăm o codificare a formei, astfel încât forma unui obiect să reprezinte „rasa” unei victime.
- Setăm proprietăți implicite – setăm culoarea de umplere a nodurilor la transparent complet și setăm lățimea liniei la 2 pixeli.
- În cele din urmă, numim
update
metodă. Aceasta rulează toți operatorii în ordine.
- Folosim un aspect de axă, plasând „data” pe axa x și „vârsta” pe axa y. The
Actualizarea unei vizualizări
Odată ce o vizualizare a fost creată, este posibil să dorim să o actualizăm. De exemplu, poate am dori să schimbăm codificarea culorilor pentru a vizualiza în schimb sexul oamenilor.
Mai întâi, să adăugăm o nouă metodă la clasă:
funcția privată colorByGender():void { var color:ColorEncoder = ColorEncoder(vis.operators[1]); color.source = "data.sex"; color.palette = new ColorPalette([0xffff5555, 0xff8888ff]); vis.update(new Transitioner(2)).play(); }
Aceasta metoda:
- Preia al doilea operator (operatorul de la indexul 1) și îl transformă în a
ColorEncoder
- Modifică
source
proprietate pentru codificatorul de culoare să folosească variabila „data.sex”. - Setează o nouă paletă de culori (în acest caz, roșu pentru femei, albastru pentru bărbați – ordinea culorilor se potrivește cu ordinea alfabetică a etichetelor)
- Animă modificarea apelând update cu a
Transitioner
stabilit pentru o animație de două secunde. Thevis.update
metoda returneazăTransitioner
, astfel încât să putem apela play pe valoarea de returnare a actualizării. (Notă: puteți, de asemenea, să omitețiTransitioner
și transmiteți doar numărul 2 ca argumentupdate
. Un nouTransitioner
va fi creat automat și returnat.)
Acum trebuie să conectăm aplicația, astfel încât să putem declanșa actualizarea în mod interactiv. Pentru a face acest lucru, adăugați următorul cod la constructor:
// adaugă o etichetă pe care se poate face clic var button:TextSprite = new TextSprite("Color by Gender"); addChild(button); butonul.x = 710; buton.y = 50; button.buttonMode = adevărat; button.addEventListener(MouseEvent.CLICK, function(evt:MouseEvent):void { colorByGender(); } );
Acest cod:
- Creează o nouă etichetă text (
TextSprite
este o clasă de ajutor dinflare.display
pachet) - Adaugă eticheta la aplicație și stabilește poziția acesteia
- Seturi
buttonMode
la adevărat (acest lucru face să apară un cursor de mână când treceți cu mouse-ul peste etichetă) - Adaugă un ascultător de evenimente care este declanșat atunci când se face clic pe etichetă. Adăugăm o funcție de apel invers care apelează
colorByGender
metodă.
Pentru ca codul de mai sus să funcționeze, va trebui să includem aceste instrucțiuni suplimentare de import în partea de sus a fișierului:
import flash.events.MouseEvent; import flare.animate.Transitioner; import flare.display.TextSprite; import flare.util.palette.ColorPalette;
Acum ar trebui să puteți compila și rula aplicația. Făcând clic pe eticheta „Culoare după sex” ar trebui să anime schimbarea codificării culorilor.
Pasii urmatori
Exemplele de mai sus arată elementele de bază ale Flash și ale bibliotecii Flare, dar există multe alte funcții care nu au fost încă acoperite. În continuare, vă recomandăm (a) să inspectați atât Flash-ul, cât și Flare API documentație pentru a obține o idee despre toate clasele disponibile și (b) săpați prin demonstrațiile Flare pentru a vedea cum aceleași principii prezentate aici pot fi folosite pentru a construi o serie de alte vizualizări. Sau, mai bine, caută codul sursă Flare pentru a afla ce se întâmplă sub capotă.
Pentru a ajuta acest proces, iată o prezentare generală a sub-pachetelor din flare.vis
:
flare.vis.axis
: furnizează axe, etichete și linii de grilăflare.vis.controls
: manere de interacțiune pentru selecție, mărire și multe alteleflare.vis.data
: obiecte vizuale care reprezintă elemente de dateflare.vis.data.render
: dispozitive de redare conectabile care deseneazăDataSprites
flare.vis.events
: tipuri de evenimente utilizate în cadrul flareflare.vis.legend
: reprezintă legende pentru descrierea codificărilor vizualeflare.vis.operator
: blocuri de construcție pentru definirea vizualizărilorflare.vis.palette
: palete pentru valori de culoare, formă și dimensiuneflare.vis.util
: clase de utilitate generală
Acum ar trebui să știți suficient pentru a înțelege demo-urile din flare.demos
pachet. Simțiți-vă liber să vă jucați, să modificați, să copiați, să lipiți și să construiți pe baza demo-urilor pentru a înțelege mai bine cum funcționează Flash și Flare.
Link-uri
Download
Instrumente
Alte ghiduri tehnice
Suport
- 100
- 7
- 9
- acces
- Suplimentar
- Avantaj
- TOATE
- Permiterea
- Amazon
- Google Analytics
- anunturi
- api
- aplicaţia
- aplicație
- aplicatii
- ZONĂ
- argumente
- în jurul
- Noțiuni de bază
- în spatele scenelor
- CEL MAI BUN
- Pic
- Negru
- Manuale
- Cutie
- browser-ul
- Bug
- gandaci
- construi
- constructor
- Clădire
- Buchet
- apel
- cazuri
- Provoca
- Schimbare
- canale
- copil
- Cerc
- cod
- comercial
- Comun
- comunitate
- tehnica de calcul
- Recipient
- conţinut
- județ
- Cuplu
- Crearea
- Curent
- de date
- set de date
- abuzive
- Amenajări
- Dezvoltare
- instrumente de dezvoltare
- easing
- Margine
- editor
- Mediu inconjurator
- eveniment
- evenimente
- Excel
- experiment
- Modă
- Caracteristică
- DESCRIERE
- Domenii
- Filtre
- În cele din urmă
- capăt
- First
- Repara
- bliț
- Flexibilitate
- Concentra
- format
- Înainte
- Gratuit
- Complet
- funcţie
- viitor
- Gen
- General
- Oferirea
- gri
- mare
- Verde
- grup
- Manipularea
- aici
- deţine
- Acasă
- Cum
- Cum Pentru a
- HTTPS
- ICON
- imagine
- Inclusiv
- index
- informații
- instituții
- interacţiune
- interactiv
- Internet
- probleme de
- IT
- Java
- JavaScript
- etichete
- limbă
- Limbă
- mare
- lansează
- conducere
- AFLAȚI
- învăţare
- Legal
- Bibliotecă
- Licență
- licențe
- Limitat
- Linie
- LINK
- Listă
- listare
- liste
- încărca
- Los Angeles
- mac
- major
- Efectuarea
- administrare
- Hartă
- Meci
- matematica
- model
- nume
- net
- reţea
- rețele
- Funcții noi
- noduri
- notificare
- oficial
- on-line
- deschide
- Opţiuni
- comandă
- Altele
- Durere
- perspectivă
- Fizică
- Platforme
- player
- intimitate
- privat
- Profit
- Programare
- limbaje de programare
- proiect
- management de proiect
- Proiecte
- proprietate
- public
- Editare
- Q1
- Rasă
- Citind
- înregistrări
- reduce
- resursă
- Resurse
- REZULTATE
- Returnează
- inversa
- Alerga
- funcţionare
- de vânzări
- Scară
- sens
- serie
- set
- instalare
- sex
- Pantaloni scurți
- simplu
- Mărimea
- mic
- So
- Software
- de dezvoltare de software
- vândut
- Spaţiu
- Etapă
- standarde
- Începe
- început
- Declarație
- statistică
- stoca
- a sustine
- Suportat
- Sprijină
- sistem
- sisteme
- vorbesc
- Ţintă
- tech
- Noțiuni de bază
- Sursa
- timp
- top
- urmări
- Transparență
- proces
- tutoriale
- Universități
- universitate
- Actualizează
- actualizări
- utilizatorii
- utilitate
- valoare
- vizualizare
- web
- aplicații web
- Ce este
- OMS
- Wikipedia
- câştiga
- ferestre
- Fire de sârmă
- în
- Apartamente
- fabrică
- scris
- X
- youtube