Flare semplifica la creazione di visualizzazioni di dati interattivi
Per iniziare a creare le tue visualizzazioni, scarica flare e segui il tutorial qui sotto. Serve ancora aiuto? Visitare il forum di aiuto (avrai bisogno di un SourceForge accedi per pubblicare).
Flare è un software open source rilasciato sotto licenza BSD, il che significa che può essere distribuito e modificato liberamente (e persino venduto per $$). Il design di Flare è stato adattato dal suo prefuso predecessore, un toolkit di visualizzazione per Java.
Applicazioni
Annunci
- 2010.10.07/XNUMX/XNUMX: Lo sviluppo di Flare è stato aperto alla comunità e la fonte è stata spostata da SourceForge a una nuova casa su GitHub. bagliore 2009.01.24 è ancora l'ultima versione ufficiale e (almeno per ora) i tutorial e la documentazione lo riflettono. La versione di sviluppo su GitHub ora contiene un supporto migliore per Flash Player 10 e molte altre piccole correzioni e modifiche.
- 2009.01.24: bagliore 2009.01.24 è stato rilasciato. Questa è una versione di manutenzione con una serie di correzioni e aggiornamenti di bug. Vedi il note di rilascio per ulteriori dettagli. Questa è l'ultima versione pianificata per Flash Player 9: le versioni future verranno migrate alla versione 10.
- 2008.07.30: bagliore 2008.07.29 è stato rilasciato. Questa è una versione importante che introduce molte nuove funzionalità e miglioramenti dell'architettura. Vedi il note di rilascio per ulteriori dettagli.
- 2008.07.30: bagliore 2008.08.08 è stato rilasciato. Questa versione include un supporto legenda migliorato, transizioni denominate, correzioni di errori e un refactoring per ridurre l'accoppiamento e consolidare le classi di utilità. Vedi il note di rilascio per ulteriori dettagli.
Tutorial
Un tutorial passo-passo per l'apprendimento di ActionScript e Flare.
Iniziamo
Il primo passo è configurare i tuoi strumenti di sviluppo.
- Imposta un ambiente di sviluppo flash funzionante. Esistono due approcci. Consigliamo il primo per semplicità, ma gli utenti più esperti sono invitati a utilizzare il secondo approccio.
- Opzione 1 (più semplice): Installa Adobe Flex Builder.
- Questo è un ambiente di sviluppo completo per le applicazioni ActionScript / Flex. È disponibile per tutte le principali piattaforme (Windows, Mac, Unix). Gli utenti che già utilizzano l'IDE Eclipse possono anche installare Flex Builder come plug-in Eclipse.
- L'avvertenza nell'uso di Flex Builder è che si tratta di un software commerciale e funzionerà solo per un periodo di prova limitato. Tuttavia, Adobe fornisce licenze Flex Builder gratuite a studenti universitari, docenti e personale.
- Opzione 2 (più complicata): Installa l'SDK Flex gratuito
- Ciò installerà i compilatori di base ActionScript / Flex:
mxmlc
edcompc
. È quindi possibile configurare il proprio ambiente di build, ad esempio, utilizzandomake
orant
costruire sistemi. Flare è confezionato con abuild.xml
file da utilizzare con Anti Apache sistema di compilazione. Una volta installata la formica, basta aprire ilbuild.xml
file in un editor di testo, modifica le prime due righe in modo che puntino al tuo Flex SDK installazione, quindi utilizzareant
per compilare le librerie. Facciamo uso delle attività formiche di Adobe Labs per lo sviluppo di Flex. - Il vantaggio di questo approccio è che tutto il software è gratuito e non scadrà su di te. Tuttavia, si perdono funzionalità come la compilazione automatica, la gestione dei progetti e il completamento automatico forniti da Flex Builder.
- Ciò installerà i compilatori di base ActionScript / Flex:
- Opzione 1 (più semplice): Installa Adobe Flex Builder.
- Scarica le librerie di flare prefuse.
- Il download è un file zip contenente una serie di progetti di libreria ActionScript. Decomprimi i file nella directory principale dell'area di lavoro se stai utilizzando Flex Builder. Durante il tutorial li importeremo in Flex Builder e li useremo per creare visualizzazioni!
- Il software è attualmente una versione alfa e quindi sono previsti alcuni bug e limitazioni. Risolveremo i problemi il prima possibile e il link sopra indicherà sempre la versione più recente.
Introduzione a Flash e ActionScript 3
Flash è un ottimo ambiente per la grafica interattiva e con la recente aggiunta del linguaggio di programmazione ActionScript 3, è diventato molto più potente ed efficiente. Mentre una completa introduzione ad AS3 va oltre lo scopo di questo tutorial, qui ci sono alcune risorse che troverai utili:
- Adobe fornisce una panoramica di AS3, con collegamenti a risorse aggiuntive.
- ActionScript essenziale 3 di Colin Moock della pubblicazione O'Reilly è un ottimo libro per aiutarti a iniziare. Puoi accedi online qui (alcune istituzioni, come le università, forniscono l'accesso gratuitamente).
- Il riferimento API Adobe Flex è prezioso per comprendere le diverse classi e metodi disponibili. Ci concentreremo solo sulle lezioni del
flash.*
Pacchetti.
Questo tutorial presuppone una conoscenza di base della sintassi e dei tipi di ActionScript, nonché dei concetti di programmazione orientata agli oggetti.
Parte 1: DisplayObjects
Introduzione
Flash modella una scena visiva 2D usando a scenegrafo. Gli oggetti visivi sono organizzati in una gerarchia, con oggetti figlio definiti nello spazio delle coordinate del genitore. Vedrai spesso questo scenario chiamato il elenco di visualizzazione sia nella documentazione di Adobe che nei libri sulla programmazione Flash.
Il nodo nella parte superiore dell'elenco di visualizzazione è sempre il Stage
oggetto. Il palcoscenico ha sempre un solo figlio. Questo si chiama il root
e tutti gli elementi visivi si trovano sotto la radice. In genere, la radice è la tua attuale applicazione Flash. Torneremo su questo presto.
Tutti gli elementi visivi che possono essere aggiunti all'elenco di visualizzazione sono istanze di DisplayObject
classe. Sottoclassi di DisplayObject
includere Bitmap
(per immagini), TextField
(per aree di testo interattive) e Video
(pensa a YouTube). I casi più comuni, tuttavia, sono i Sprite
ed Shape
classi. Per riferimento, la maggior parte di queste classi si trova in flash.display
pacchetto (anche se alla fine probabilmente troverai il flash.text
pacchetto di utilizzo).
I Sprite
class è l'oggetto visivo generale più utile utilizzato da Flash Player. Gli sprite sono oggetti visivi che contengono entrambi i contenuti del disegno e possono fungere da contenitore per i sottonodi nell'elenco di visualizzazione (il Sprite
la classe subclasse il flash.display.DisplayObjectContainer
classe). Al contrario, il Shape
La classe può contenere contenuti di disegno, ma non può contenere sottonodi. Di conseguenza, le forme consumano meno memoria, ma sono molto meno flessibili. Per semplicità, ci concentreremo sugli Sprites in questo tutorial.
Crea una nuova applicazione
Innanzitutto, creiamo una nuova applicazione Flash. Per fare ciò, apri Flex Builder e assicurati di essere nella prospettiva "Flex Development" (spesso raggiunta facendo clic sull'icona "Fx" in bianco e nero in alto a destra).
Nel riquadro "Navigatore" a sinistra, fare clic con il pulsante destro del mouse sul display e selezionare "Nuovo> Progetto ActionScript". Nella finestra di dialogo risultante, digitare "Tutorial" come nome del progetto, quindi fare clic su "Fine". Questo creerà un nuovo progetto per te.
Ora dovresti vedere una cartella "Tutorial" nel riquadro "Navigator". All'interno di questa cartella, dovresti vedere un file chiamato "Tutorial.as". Questo è il file dell'applicazione principale. Aprilo, se non è già aperto.
All'interno del file, vedrai le impalcature di base per questa classe:
pacchetto {import flash.display.Sprite; tutorial di classe pubblica estende Sprite {public function Tutorial () {}}}
Si noti che questa classe estende il Sprite
classe. Perché questa è la nostra principale classe di applicazione, quando eseguiamo l'applicazione un'istanza di Tutorial
la classe verrà automaticamente aggiunta all'elenco di visualizzazione come sua root
(l'unico e unico figlio del Stage
).
Si noti inoltre che un costruttore è stato creato automaticamente. Questo costruttore verrà chiamato all'avvio dell'applicazione. Per coloro che hanno familiarità con i linguaggi di programmazione come C, C ++ o Java, il costruttore per la classe dell'applicazione si comporta in modo molto simile a main
funzione in quelle altre lingue.
Con questa nuova impalcatura di applicazione in atto, possiamo iniziare a giocare con oggetti visivi. Tuttavia, c'è una cosa che vogliamo fare prima. Aggiungi una nuova riga direttamente sopra la dichiarazione di classe ("public class Tutorial…
") Linea che dice:
[SWF (larghezza = "800", altezza = "600", backgroundColor = "# ffffff", frameRate = "30")]
Questa riga definisce le impostazioni predefinite per la tua applicazione (che viene compilata e salvata come file .swf nella directory “bin” del tuo progetto). Sopra, impostiamo le dimensioni, il colore di sfondo e la frequenza dei fotogrammi di destinazione (in fotogrammi al secondo) per la nostra applicazione.
sprites
Come tutti DisplayObjects
, Sprite
supporta una serie di proprietà visive immediatamente disponibili. Questo include il x
, y
, scaleX
, scaleY
, rotation
e alpha
proprietà. Questi rispettivamente cambiano la posizione, le dimensioni, l'orientamento e la trasparenza di uno sprite (e di tutti i suoi figli! Ricorda, qui stiamo usando uno scenario).
Tuttavia, questi valori non significano ancora molto, poiché gli sprite non contengono nulla per impostazione predefinita. Inizieremo disegnando il nostro contenuto.
Ogni Sprite ha anche un graphics
proprietà. Possiamo usarlo per disegnare grafici per Sprite
. graphics
La proprietà è un'istanza di flash.display.Graphics
classe, che fornisce una serie di comandi di disegno vettoriale.
Nell'esempio seguente, facciamo una serie di cose.
- Innanzitutto, ne creiamo uno nuovo
Sprite
. - Secondo, usiamo gli sprite
graphics
per disegnare un cerchio con riempimento grigio e contorno nero.beginFill
imposta il colore e lo stile di riempimento correnti. Il primo argomento è il colore, in notazione esadecimale, e il secondo argomento è il valore alfa, che varia da 0 per completamente trasparente a 1 per completamente opaco.lineStyle
imposta il colore e lo stile del tratto corrente. Il primo argomento è la larghezza della linea, il secondo argomento è il colore.drawCircle
disegna un cerchio di raggio 10 nel punto 0,0 nello spazio delle coordinate del nostro sprite.
- Terzo, aggiungiamo lo sprite come figlio della nostra applicazione principale (a
Tutorial
folletto). - In quarto luogo, abbiamo impostato il
x
edy
posizione del nostro sprite. - In quinto luogo, aggiungiamo alcuni output di debug.
trace
stampa una stringa sulla console. Questo output viene visualizzato solo quando si esegue l'app in modalità "debug".
Ecco il codice:
pacchetto {import flash.display.Sprite; [SWF (width = "800", height = "600", backgroundColor = "# ffffff", frameRate = "30")] tutorial di classe pubblica estende Sprite {tutorial di funzione pubblica () {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 ("il nostro sprite è su:" + sprite.x + "," + sprite.y); }}}
Eseguire l'applicazione (fare clic con il pulsante destro del mouse su "Tutorial.as" e selezionare "Esegui come> Applicazione Flex"). Dovresti vedere un cerchio grigio con contorno nero nell'angolo in alto a sinistra, centrato sul punto 50, 50. Se esegui l'applicazione in modalità debug (seleziona "Debug As> Flex Application"), dovresti anche vedere la stringa "our sprite è a: 50, 50 "nella console di output.
Sprites annidati
Ora rendiamo la nostra scena un po 'più interessante. Cominciamo spostando il nostro codice di generazione Sprite in un nuovo metodo. Aggiungeremo questo metodo alla nostra classe:
funzione privata 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; restituire lo sprite; }
Successivamente, sostituiamo il codice nel nostro costruttore. Innanzitutto, creiamo un nuovo sprite chiamato container che useremo per contenere una raccolta di cerchi. Lo posizioniamo al centro del nostro palcoscenico. In secondo luogo, utilizziamo un loop per creare un gruppo di cerchi. Qui, allineamo i cerchi simmetricamente attorno al punto 0,0 del contenitore principale. Il nostro nuovo costruttore ora appare così:
funzione pubblica Tutorial () {var container: Sprite = new Sprite (); contenitore.x = 400; container.y = 300; this.addChild (container); for (var i: int = 0; i <10; ++ i) {var x: Number = (i / 5 <1? 1: -1) * (13 + 26 * (i% 5)); container.addChild (createCircle (x, 0)); }}
Esegui la nuova versione dell'applicazione. Dovresti vedere una linea di dieci cerchi nel mezzo dell'applicazione.
Ora possiamo modificare il contenitore per aggiornare tutti i cerchi al suo interno. Prova a giocare impostando diverse variabili visive sullo sprite del contenitore. Ad esempio, modificare il x
, y
, scaleX
, scaleY
, rotation
e alpha
proprietà.
altri argomenti
Puoi fare molto di più con le opzioni di base fornite da Flash. Sfortunatamente, sono un po 'oltre ciò che abbiamo tempo per qui. Alcune cose da esplorare includono i filtri di immagine (vedi il flash.filters
pacchetto), che consente di aggiungere effetti visivi per visualizzare gli oggetti usando il loro filters
proprietà e le diverse opzioni disponibili in flash.display.Graphics
classe, inclusi gli stili di riempimento e linea e molte altre routine di disegno 2D.
Parte 2: Animazioni
Ora che possiamo creare oggetti visivi, è tempo di iniziare a dare loro un po 'di vita. Flare include il file flare.animate
pacchetto per rendere tutto più semplice. Innanzitutto, è necessario importare le librerie di flare da utilizzare in Flex Builder.
Importazione di librerie
Prima di procedere, assicurarsi di avere le librerie di flare caricate come progetti in Flex Builder. Dovresti aver già decompresso i file flare nella directory principale dell'area di lavoro di Flex Builder. Il prossimo passo è importarli nell'ambiente Flex Builder:
- Assicurati di essere nella prospettiva "Sviluppo flessibile".
- Fare clic con il tasto destro sul riquadro di navigazione a sinistra.
- Seleziona "Importa ..." nel menu popup.
- Nella finestra di dialogo, selezionare "Generale> Progetti esistenti nello spazio di lavoro" e fare clic sul pulsante "Avanti".
- Utilizzare i widget "Seleziona directory principale" per accedere alla directory dell'area di lavoro di Flex Builder
- Ora dovresti vedere i progetti flare elencati nel pannello "Progetti:".
- Selezionare i progetti "flare" e "flare.demos", quindi fare clic sul pulsante "Fine".
Ora dovresti vedere i progetti flare nel riquadro Navigator. È ora possibile sfogliare il codice sorgente per ciascuna libreria e demo.
Panoramica della libreria di flare
Ecco una rapida panoramica del flare toolkit. Dentro il flare
progetto, guarda all'interno della cartella "src / flare". Troverai una serie di pacchetti che offrono diverse funzionalità:
analytics
: operatori per il calcolo delle statistiche e l'analisi dei datianimate
: strumenti per la creazione di animazionidata
: metodi per la lettura e la scrittura di set di datidisplay
:DisplayObject
tipi che estendono quelli forniti daflash.display
flex
: un wrapper per incorporare visualizzazioni Flare in applicazioni Flexphysics
: un motore fisico per effetti fisici o layout orientato alla forzaquery
: un processore di query per oggetti ActionScriptscale
: classi per la gestione di scale di dati, quali scale lineari, log e temporaliutil
: un insieme di classi di utilità che forniscono funzioni comunemente necessarievis
: i componenti e gli operatori di visualizzazione flare
C'è anche il flare.demos
progetto, che fornisce una serie di esempi su come creare componenti Flare.
Importare una libreria all'interno di un altro progetto
Per utilizzare il flare nei tuoi progetti, dovrai aggiornare le impostazioni del tuo progetto. Ecco come farlo:
- Nel riquadro Navigator, fare clic con il tasto destro sulla cartella superiore del progetto "Tutorial"
- Fai clic su "Proprietà" nel menu contestuale
- Nella finestra di dialogo risultante, fai clic su "Percorso di costruzione di ActionScript" nel pannello di sinistra (dovrebbe essere il terzo elemento dall'alto)
- Fai clic sulla scheda "Percorso libreria" nel pannello di destra
- Fai clic sul pulsante "Aggiungi progetto"
- Ora dovresti vedere un elenco di progetti, incluso flare.
- Selezionare "svasatura" e quindi fare clic su "OK"
Ora hai aggiunto le librerie di flare al tuo progetto e puoi utilizzare una qualsiasi delle classi fornite.
Una cosa da notare sul compilatore Flex: per impostazione predefinita, include solo le classi effettivamente utilizzate nell'applicazione. Quindi, anche se importi una libreria molto grande, la dimensione del tuo file .swf finale può essere ancora piuttosto piccola. Tuttavia, attenzione che ciò può causare problemi se si utilizza la reflection per eseguire il caricamento dinamico della classe nell'applicazione (una funzionalità più avanzata non illustrata in questa esercitazione).
Animazione di base: interpolazione, sequenza e parallela
Ok, ora animiamo! Il flare.animate.Transition
class è la classe base per tutte le animazioni. Sottoclassi importanti di Transition
sono la Tween
, Sequence
e Parallel
transizioni. Le interpolazioni vengono utilizzate per animare le proprietà di un singolo oggetto. Le sequenze vengono utilizzate per eseguire una serie di animazioni in ordine. Le transizioni parallele eseguono contemporaneamente una raccolta di transizioni. Cominciamo con Tween.
Interpolazione delle proprietà degli oggetti
Le basi della classe Tween sono semplici: prendiamo un oggetto, diamo un insieme di valori di proprietà che vorremmo cambiare nel tempo e specificiamo la durata del tempo per quella modifica. Usando l'applicazione Tutorial dalla Parte 1, ruotiamo l'oggetto contenitore. Aggiungi la seguente riga alla fine del costruttore della classe Tutorial:
var tween: Tween = new Tween (container, 3, {rotazione: 360}); tween.play ();
Inoltre, assicurati di avere una nuova dichiarazione di importazione in cima alla tua classe, in modo che il compilatore sappia di cosa stai parlando. Aggiungi questo all'elenco delle importazioni:
importare flare.animate.Tween;
(NOTA: a volte Flex Builder aggiungerà automaticamente un'istruzione di importazione durante la digitazione di un nuovo nome di classe. In caso contrario, un'altra tecnica è posizionare il cursore di testo su Alla fine del nuovo nome della classe e digitare "Ctrl-Spazio" - questo dovrebbe creare una nuova importazione per te per la classe.)
Ora esegui la tua applicazione: i punti dovrebbero ruotare in un cerchio per un periodo di 3 secondi.
Ecco cosa sta facendo il costruttore Tween:
- Il primo argomento è l'oggetto i cui valori devono essere interpolati
- Il secondo argomento è la lunghezza dell'animazione, in secondi
- Il terzo argomento è un'istanza Object che elenca le proprietà da animare e i loro valori target.
- I nomi delle proprietà devono corrispondere esattamente alle proprietà dell'oggetto di input.
- Le proprietà nidificate sono consentite, ma devono essere racchiuse tra virgolette. Per esempio,
{“data.profit”:50}
è un input legale se l'oggetto di input ha una proprietà denominata data che a sua volta ha una proprietà denominata profit.
I play
Il metodo esegue quindi l'animazione. Il play
Il metodo può anche essere chiamato con un singolo parametro booleano che indica se eseguire o meno l'animazione al contrario.
Potresti aver notato che l'animazione di rotazione mostra una certa accelerazione. Questo perché l'impostazione predefinita per Tween
istanze è usare l'animazione "slow-in slow-out". Puoi controllare questi comportamenti usando Easing
funzioni. Queste funzioni prendono come input l'attuale progresso dell'animazione come una frazione tra 0 e 1. Restituiscono quindi una frazione di progresso manipolata per cambiare il ritmo dell'animazione, spesso in modo non lineare.
Per rimuovere l'allentamento (ovvero, utilizzare una funzione di allentamento lineare) è possibile scrivere: tween.easing = Easing.none
. Assicurati di importare il file flare.animate.Easing
classe nella parte superiore del file.
Sentiti libero di sperimentare altre funzioni di allentamento. Ad esempio, le funzioni di andamento possono comportare l'allentamento (manipolare solo l'inizio dell'animazione), l'allentamento (manipolare solo la fine dell'animazione) o entrambi. Ad esempio, prova questo: tween.easing = Easing.easeOutBounce
. Questo dovrebbe far rimbalzare la rotazione alla fine.
Prima di proseguire, prova ad animare altre proprietà del contenitore, come posizione, scala o valori alfa.
Animazioni composite
I Sequence
ed Parallel
le lezioni ti consentono di raggruppare le animazioni insieme. La sequenza esegue una serie di animazioni una dopo l'altra. Ad esempio, prova questo:
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 ();
Dovrai anche aggiungere alcune nuove dichiarazioni di importazione nella parte superiore del file:
import flare.animate.Parallel; import flare.animate.Sequence;
Questo crea quattro interpolazioni: t1
, t2
, t3
e t4
. Crea quindi due transizioni parallele che vengono eseguite t1
ed t2
insieme e scappiamo t3
ed t4
insieme. Le transizioni parallele vengono quindi eseguite una dopo l'altra in una sequenza. In questo modo, è facile creare animazioni più complicate.
Per animazioni composite più avanzate, dai un'occhiata a FlareLogo
ed flare.demos.Animation
lezioni nel flare.demos
progetto.
Animazione batch con Transitioners
Usando il Tween
, Parallel
e Sequence
classi, è possibile effettuare qualsiasi numero di transizioni animate. Tuttavia, quando si ha a che fare con grandi raccolte di oggetti (comuni nella visualizzazione) può essere una seccatura gestire manualmente un insieme di interpolazioni altrettanto grandi. Inoltre, dovrebbe essere facile eseguire routine separate per codificare proprietà visive come layout, colore, dimensioni, forma e non doversi preoccupare di gestire l'animazione. Forse vuoi animare le modifiche o forse vuoi un aggiornamento statico. In entrambi i casi, dovresti essere in grado di riutilizzare lo stesso codice per l'assegnazione di valori.
Per rispondere a queste preoccupazioni, Flare fornisce il Transitioner
classe. I transitori semplificano il processo di creazione di animazioni per raccolte di oggetti. Basta prendere un oggetto e impostare le proprietà desiderate una per una. Dietro le quinte, il transizione genererà e riutilizzerà automaticamente le interpolazioni necessarie per modellare l'animazione completa. Inoltre, se l'animazione non è desiderata, è possibile configurare il transizione per impostare immediatamente i valori delle proprietà. In breve, il transizione offre un livello di riferimento indiretto per l'aggiornamento delle proprietà dell'oggetto: questi aggiornamenti possono essere raccolti e quindi animati o applicati immediatamente.
Ecco un semplice esempio dell'uso di un transizione nella nostra app tutorial.
var t: Transitioner = new Transitioner (2); for (var j: int = 0; j
Questo esempio anima tutti gli sprite in container
a un nuovo casuale y
posizione e fattore di scala verticale casuale. Innanzitutto ne creiamo uno nuovo Transitioner
che dovrebbe creare un'animazione di 2 secondi. Quindi eseguiamo il ciclo di ogni sprite figlio e utilizziamo il transizione per impostare le proprietà su Tween.
The Transitioner's $
l'operatore indica che vogliamo impostare un valore target per l'oggetto di input. Per impostazione predefinita, uno nuovo Tween
viene creato o esistente Tween
viene trovato per l'elemento corrente. Il $
l'operatore quindi restituisce un oggetto su cui impostare la proprietà target dell'interpolazione.
Inoltre, i transitori possono essere utilizzati per creare transizioni statiche (non animate). Se un transitorio immediate
la proprietà è impostata su true, non creerà nuove interpolazioni. Invece, l'operatore $ restituirà semplicemente il valore di input. Ciò significa che è possibile creare metodi che aggiornano i valori utilizzando un transizione e successivamente controllare se si desidera aggiornare tali valori. La "modalità immediata" standard Transitioner
viene recuperato utilizzando la statica Transitioner.DEFAULT
proprietà. In questo modo non è necessario allocare un nuovo Transitioner
quando si eseguono aggiornamenti immediati.
I transitori sono ampiamente utilizzati in tutto il flare.vis
pacchetto, che consente ai progettisti di visualizzazioni di controllare quali aggiornamenti devono essere animati e come.
Parte 3: visualizzazioni
Caricamento dati
La rappresentazione dei dati di base per Flare utilizza semplicemente i tipi di dati Flash incorporati: Object
ed Array
. Ad esempio, una tabella di dati può essere semplicemente rappresentata come una matrice di oggetti, che ogni oggetto contiene i nomi e i valori di ciascun campo di dati. Sebbene siano possibili rappresentazioni più efficienti, questo approccio offre la massima flessibilità sfruttando al contempo le convenzioni di sviluppo Flash esistenti.
Per caricare i dati in Flash Player, esistono diversi approcci. Un approccio semplice è quello di incorporare i tuoi dati nell'applicazione stessa. In questo modo, i dati vengono scaricati insieme all'applicazione, il che va bene per i set di dati statici. Ad esempio, è possibile utilizzare la notazione oggetto di ActionScript per definire il set di dati direttamente come variabile:
var var: Array = [{id: "Q1", sales: 10000, profit: 2400}, {id: "Q2", sales: 12000, profit: 2900}, {id: "Q3", sales: 15000, profit : 3800}, {id: "Q4", vendite: 15500, profitto: 3900}];
Tuttavia, in molti casi vorrai caricare i tuoi dati in modo dinamico, sia all'interno di una pagina web (puoi usare JavaScript nel browser per passare valori in Flash), sia da un server su Internet. Ci sono molti approcci per farlo e dovresti scegliere quello che funziona meglio per la tua specifica applicazione. Ad esempio, ActionScript fornisce tipi di dati e sintassi aggiuntivi per l'utilizzo XML dati usando ECMAScript per XML (E4X).
Flare fornisce anche alcune utilità per il caricamento di set di dati esterni. Supporta il caricamento di dati da qualsiasi server su Internet e la conversione di tali dati in oggetti ActionScript interni. I formati di file attualmente supportati sono delimitati da tabulazioni ("tab", un formato di file standard per l'esportazione di dati da strumenti come Excel), Notazione oggetto JavaScript ("Json", un formato di dati comune per le applicazioni Web) e graphml ("Graphml", an XML formato per rappresentare reti con nodi e bordi).
I dati remoti vengono caricati da Flare usando il flare.data.DataSource
classe. Ecco un esempio dell'uso per caricare un file di dati delimitato da tabulazioni:
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 {// funzione per gestire i dati una volta completato il caricamento var ds: DataSet = loader.data come DataSet; // ora fa qualcosa con i dati ...} );
I DataSource
Il costruttore ha due argomenti richiesti: l'URL del set di dati e una stringa che indica il formato del file. In questo momento i formati supportati sono "tab" (delimitato da tabulazioni), "json" (JavaScript Object Notation) e "graphml" (GraphML).
Per i set di dati il cui schema (i nomi e i tipi di dati dei campi) potrebbero non essere chiari, esiste anche un terzo argomento facoltativo del costruttore che accetta un DataSchema
genere. Vedi il flare.data.DataSchema
ed flare.data.DataField
lezioni per di più. Lo schema può essere utile per garantire che i valori dei dati siano correttamente denominati (ad es. Per un file delimitato da tabulazioni privo di una riga di intestazione) e convertiti nei tipi di dati appropriati (ad es. Per i dati JSON in cui i valori numerici sono stati racchiusi tra virgolette).
Per caricare effettivamente i dati, viene chiamato il metodo di caricamento DataSource, che restituisce a flash.net.URLLoader
esempio. Il caricatore può essere utilizzato per tenere traccia dell'avanzamento del download (ad esempio, se si desidera fornire una barra di avanzamento) e fornisce un evento di notifica al termine del download. Nell'esempio sopra, aggiungiamo un listener di eventi per ricevere una notifica al termine del download. Il DataSource
analizzerà automaticamente i dati di input, li mapperà in oggetti ActionScript e memorizzerà i risultati in a flare.data.DataSet
oggetto. Il DataSet
La classe può rappresentare sia i dati di tabella che quelli di rete (nodo / bordo).
Creazione e gestione di oggetti visivi
Ora vorremmo visualizzare un set di dati. Per fare ciò, mappiamo i singoli record di dati in elementi visivi. Flare fornisce una serie di oggetti visivi per rappresentare i dati. Ecco una panoramica delle classi di base fornite da flare.vis.data
pacchetto.
DataSprite
: Classe di base per gli sprite che rappresentano visivamente i dati.DataSprite
è una sottoclasse di Flash PlayerSprite
classe.DataSprite
include un modulodata
proprietà in cui è memorizzata la tupla di dati (un oggetto ActionScript) e fornisce anche variabili visive aggiuntive oltre a quelle supportate dagli sprite di base, inclusi i campi di colore, forma e dimensione e supporto per l'impostazione delle posizioni in coordinate polari.NodeSprite
:DataSprite
istanza che rappresenta un nodo. Questo è il tipo predefinito utilizzato per visualizzare i dati.NodeSprite
le istanze possono essere connesse all'interno di strutture di rete o ad albero tramiteEdgeSprite
le istanze.EdgeSprite
:DataSprite
istanza che rappresenta un bordo. UnEdgeSprite
collega dueNodeSprites
. I nodi sono accessibili tramitesource
edtarget
proprietà.EdgeSprites
vengono utilizzati per creare grafici e alberi, nonché per rappresentare linee, ad esempio nei grafici delle serie temporali.
In genere, NodeSprites e EdgeSprites vengono creati e archiviati in flare.vis.data.Data
classe, che gestisce tutti gli elementi visivi per una singola visualizzazione. Il Data
La classe fornisce metodi per creare nuovi oggetti visivi per le tuple di dati e per rappresentare una struttura grafica.
I Data
class fornisce anche metodi per attraversare e aggiornare gli elementi di dati contenuti. Il nodes
ed edges
le proprietà restituiscono gli elenchi dei nodi e dei bordi contenuti nei dati. Ognuno di questi elenchi include a visit
metodo che consente di passare una funzione che verrà quindi chiamata con ciascun nodo o bordo. Anche il setProperty
ed setProperties
i metodi consentono di impostare valori di proprietà per tutti i nodi o i bordi contemporaneamente. Questi metodi opzionalmente prendono a Transitioner
come argomento, in modo da poter animare l'aggiornamento della proprietà.
Ad esempio, il codice seguente genera un'animazione di un secondo in cui il colore della linea per tutti i nodi è impostato su blu. (Nota che la notazione esadecimale per DataSprite
i valori di colore includono i canali alfa e rosso, verde, blu).
data.nodes.setProperty ("lineColor", 0xff0000bb, nuovo Transitioner (1)). play ();
Gli elenchi dei nodi e dei bordi supportano anche i valori di proprietà predefiniti, usando il setDefault
, setDefaults
, removeDefault
e clearDefaults
metodi. I valori predefiniti verranno impostati su un nodo o un bordo appena creato utilizzando la classe Data " addNode
or addEdgeFor
metodi.
I Tree
la classe è una sottoclasse di Data
, specializzato per rappresentare un albero anziché un grafico generale. Il Data
class supporta la creazione automatica di a Tree
istanza calcolando lo spanning tree di un grafico generale. È possibile passare come parametro un numero di metodi di creazione di spanning tree, inclusi gli algoritmi breadth-first, depth-first e minimi spanning tree. Questi calcoli vengono eseguiti utilizzando il flare.analytics.graph.SpanningTree
classe.
Per creare effettivamente oggetti nodo e bordi, usiamo il addNode
ed addEdgeFor
metodi.
addNode
accetta una tupla di dati di input (anObject
) e crea un nuovoNodeSprite
per visualizzare quei dati.addEdgeFor
ne prende due esistentiNodeSprites
e aggiunge unEdgeSprite
collegandoli. Il metodo facoltativamente esclude anche una tupla di dati (di nuovo, unObject
che rappresenta qualsiasi campo di dati) per il bordo.
Ecco un semplice esempio per la creazione NodeSprites
per un set di dati tabulare, supponendo che abbiamo una matrice di oggetti dati:
elenco var: array; // un array di oggetti dati che abbiamo già caricato var data: Data = new Data (); // un nuovo contenitore di dati per ciascuno (var o: Object in list) {data.addNode (o); }
Il risultato è a Data
oggetto popolato con visual DataSprite
(nodi o bordi) istanze.
In pratica, non è sempre necessario popolare manualmente i dati visualizzati. Per creare un Data
oggetto per la visualizzazione di un set di dati caricato, è spesso possibile utilizzare invece un metodo di convenienza. Il Data.fromArray()
la funzione crea un Data
istanza per dati tabulari memorizzati come una matrice di oggetti ActionScript, mentre il file Data.fromDataSet()
allo stesso modo crea un Data
istanza da un caricato DataSet
oggetto.
Costruire una visualizzazione
Ora mettiamo tutto insieme per iniziare a fare visualizzazioni. Il Visualization
La classe rappresenta una singola visualizzazione, inclusi i segni visivi (memorizzati in a Data
istanza) e assi. Per creare una visualizzazione, carichiamo un set di dati, aggiungiamo i dati a una visualizzazione e impostiamo operatori che determinano come visualizzare i dati. Ecco un esempio Controlla prima il codice, quindi continua a leggere per capire cosa sta facendo ogni parte.
pacchetto {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 (larghezza = "800", altezza = "600", backgroundColor = "# ffffff", frameRate = "30")] Il tutorial di classe pubblica estende Sprite {variante privata: visualizzazione; public function Tutorial () {loadData (); } funzione privata 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; visualizza (Data.fromDataSet (ds));}); } visualizzazione della funzione privata (dati: dati): void {vis = new Visualization (data); vis.bounds = new Rectangle (0, 0, 600, 500); vis.x = 100; vis.y = 50; addChild (vis); vis.operators.add (nuovo AxisLayout ("data.date", "data.age")); vis.operators.add (nuovo ColorEncoder ("data.cause", Data.NODES, "lineColor", ScaleType.CATEGORIES)); vis.operators.add (nuovo ShapeEncoder ("data.race")); vis.data.nodes.setProperties ({fillColor: 0, lineWidth: 2}); vis.update (); }}}
Diamo un'occhiata a ciascun metodo.
Il costruttore è semplice: chiama semplicemente il loadData
metodo.
I loadData
Il metodo crea una nuova origine dati e la carica utilizzando i metodi descritti in precedenza. In questo caso, nel 2007 sono stati segnalati omicidi nella contea di Los Angeles, archiviati in formato delimitato da tabulazioni. Al termine del caricamento, le tuple di dati caricate vengono aggiunte a Data
istanza usando il fromDataSet
metodo di convenienza. Sotto il cofano, questo si traduce nella creazione di NodeSprites
per visualizzare ciascun elemento di dati. Infine, il visualize
viene chiamato metodo.
I visualize
Il metodo imposta la visualizzazione. Ecco cosa sta succedendo in ogni passaggio:
- Parte 1: inizializzazione
- Viene creata una nuova visualizzazione per i dati
- Definiamo i limiti per la visualizzazione. Questo determina l'area del layout.
- Abbiamo impostato il
x
edy
posizione della nostra visualizzazione e aggiungere la visualizzazione all'elenco di visualizzazione.
- Parte 2: specifica delle codifiche visive
- Usiamo un layout dell'asse, posizionando "data" sull'asse x e "età" sull'asse y. Il
AxisLayout
l'operatore configura anche automaticamente gli assi per la visualizzazione. Usiamo la sintassi "data.date" per indicare le variabili di dati, poiché si trovano all'interno diNodeSprite
'Sdata
proprietà. - Aggiungiamo una codifica a colori, in modo che il colore della linea di un nodo rappresenti la variabile "causa" (causa della morte). Diciamo anche al codificatore di colore che i valori della variabile "cause" rappresentano le categorie (
ScaleType.CATEGORIES
). Il codificatore di colore utilizzerà queste informazioni per selezionare automaticamente una tavolozza di colori appropriata. Come vedremo tra poco, puoi anche fornire la tua tavolozza dei colori. - Aggiungiamo una codifica di forma, in modo che la forma di un oggetto rappresenti la "razza" di una vittima.
- Impostiamo le proprietà predefinite: impostiamo il colore di riempimento dei nodi su completamente trasparente e impostiamo la larghezza della linea su 2 pixel.
- Infine, chiamiamo il
update
metodo. Questo esegue tutti gli operatori in ordine.
- Usiamo un layout dell'asse, posizionando "data" sull'asse x e "età" sull'asse y. Il
Aggiornamento di una visualizzazione
Una volta creata una visualizzazione, potremmo voler aggiornarla. Ad esempio, forse vorremmo cambiare la codifica a colori per visualizzare invece il genere delle persone.
Innanzitutto, aggiungiamo un nuovo metodo alla classe:
funzione privata colorByGender (): void {var color: ColorEncoder = ColorEncoder (vis.operators [1]); color.source = "data.sex"; color.palette = new ColorPalette ([0xffff5555, 0xff8888ff]); vis.update (nuovo Transitioner (2)). play (); }
Questo metodo:
- Recupera il secondo operatore (l'operatore all'indice 1) e lo lancia a
ColorEncoder
- Cambia il
source
proprietà per il codificatore del colore di utilizzare la variabile "data.sex" - Imposta una nuova tavolozza di colori (in questo caso, rosso per le femmine, blu per i maschi - l'ordine dei colori corrisponde all'ordine alfabetico delle etichette)
- Anima la modifica chiamando update con a
Transitioner
impostato per un'animazione di due secondi. Ilvis.update
Il metodo restituisce ilTransitioner
, quindi possiamo chiamare play sul valore di ritorno dell'aggiornamento. (Nota: puoi anche omettere ilTransitioner
e basta passare il numero 2 come argomento aupdate
. Un nuovoTransitioner
verrà creato automaticamente e restituito.)
Ora dobbiamo collegare l'applicazione in modo da poter attivare in modo interattivo l'aggiornamento. Per fare ciò, aggiungi il seguente codice al costruttore:
// aggiungi un'etichetta cliccabile pulsante var: TextSprite = new TextSprite ("Colore per genere"); addChild (pulsante); button.x = 710; button.y = 50; button.buttonMode = true; button.addEventListener (MouseEvent.CLICK, funzione (evt: MouseEvent): void {colorByGender ();});
Questo codice:
- Crea una nuova etichetta di testo (
TextSprite
è una classe di supporto dalflare.display
pacchetto) - Aggiunge l'etichetta all'applicazione e ne imposta la posizione
- Set
buttonMode
su true (questo fa apparire un cursore a forma di mano quando passi il mouse sopra l'etichetta) - Aggiunge un listener di eventi che viene attivato quando si fa clic sull'etichetta. Aggiungiamo una funzione di callback che chiama il
colorByGender
metodo.
Affinché il codice sopra riportato funzioni, dovremo includere queste dichiarazioni di importazione aggiuntive nella parte superiore del file:
importare flash.events.MouseEvent; importare flare.animate.Transitioner; importare flare.display.TextSprite; importare flare.util.palette.ColorPalette;
Ora dovresti essere in grado di compilare ed eseguire l'applicazione. Fare clic sull'etichetta "Colore per genere" dovrebbe animare il cambiamento nella codifica dei colori.
Passi successivi
Gli esempi sopra mostrano le basi di Flash e della libreria Flare, ma ci sono molte altre funzionalità che devono ancora essere coperte. In futuro, si consiglia di (a) ispezionare sia il Flash che il Flare API documentazione per avere un'idea di tutte le classi disponibili e (b) scavare attraverso le demo di Flare per vedere come gli stessi principi mostrati qui possono essere usati per costruire una serie di altre visualizzazioni. O, meglio ancora, scavare attraverso il codice sorgente di Flare per scoprire cosa sta succedendo sotto il cofano.
Per facilitare questo processo, ecco una panoramica generale dei sotto-pacchetti in flare.vis
:
flare.vis.axis
: fornisce assi, etichette e linee della grigliaflare.vis.controls
: gestori di interazioni per selezione, zoom e altroflare.vis.data
: oggetti visivi che rappresentano elementi di datiflare.vis.data.render
: renderer innestabili che disegnanoDataSprites
flare.vis.events
: tipi di eventi utilizzati nel framework flareflare.vis.legend
: rappresenta le leggende per la descrizione delle codifiche visiveflare.vis.operator
: elementi costitutivi per la definizione di visualizzazioniflare.vis.palette
: tavolozze per i valori di colore, forma e dimensioneflare.vis.util
: classi di utilità generali
Ora dovresti sapere abbastanza per dare un senso alle demo nel flare.demos
pacchetto. Sentiti libero di giocare, modificare, copiare, incollare e sviluppare le demo per capire meglio come funzionano Flash e Flare.
Link
Scarica
Strumenti
Altre guide tecniche
Assistenza
- 100
- 7
- 9
- accesso
- aggiuntivo
- Vantaggio
- Tutti
- Consentire
- Amazon
- analitica
- Annunci
- api
- App
- Applicazioni
- applicazioni
- RISERVATA
- argomenti
- in giro
- Nozioni di base
- dietro le quinte
- MIGLIORE
- Po
- Nero
- Libri
- Scatola
- del browser
- Insetto
- bug
- costruire
- costruttore
- Costruzione
- Mazzo
- chiamata
- casi
- Causare
- il cambiamento
- canali
- bambino
- Cerchio
- codice
- Uncommon
- comunità
- informatica
- Contenitore
- contenuto
- contea
- Coppia
- Creazione
- Corrente
- dati
- set di dati
- trattare
- Design
- Mercato
- strumenti di sviluppo
- facilitando
- bordo
- editore
- Ambiente
- Evento
- eventi
- Excel
- esperimento
- Moda
- caratteristica
- Caratteristiche
- campi
- filtri
- Infine
- sottile
- Nome
- Fissare
- Cromatografia
- Flessibilità
- Focus
- formato
- Avanti
- Gratis
- pieno
- function
- futuro
- Sesso
- Generale
- Dare
- grigio
- grande
- Green
- Gruppo
- Manovrabilità
- qui
- tenere
- Casa
- Come
- Tutorial
- HTTPS
- ICON
- Immagine
- Compreso
- Index
- informazioni
- istituzioni
- interazione
- interattivo
- Internet
- sicurezza
- IT
- Java
- JavaScript
- per il tuo brand
- Lingua
- Le Lingue
- grandi
- lancia
- principale
- IMPARARE
- apprendimento
- Legale
- Biblioteca
- Licenza
- licenze
- Limitato
- linea
- LINK
- Lista
- annuncio
- elenchi
- caricare
- Los Angeles
- Mac
- maggiore
- Fare
- gestione
- carta geografica
- partita
- matematica
- modello
- nomi
- rete
- Rete
- reti
- Nuove funzionalità
- nodi
- notifica
- ufficiale
- online
- aprire
- Opzioni
- minimo
- Altro
- Dolore
- prospettiva
- Fisica
- Piattaforme
- giocatore
- Privacy
- un bagno
- Profitto
- Programmazione
- linguaggi di programmazione
- progetto
- gestione del progetto
- progetti
- proprietà
- la percezione
- editoriale
- Q1
- Gara
- Lettura
- record
- ridurre
- risorsa
- Risorse
- Risultati
- problemi
- invertire
- Correre
- running
- vendite
- Scala
- senso
- Serie
- set
- regolazione
- Sesso
- Corti
- Un'espansione
- Taglia
- piccole
- So
- Software
- lo sviluppo del software
- venduto
- lo spazio
- Stage
- standard
- inizia a
- iniziato
- dichiarazione
- statistica
- Tornare al suo account
- supporto
- supportato
- supporti
- sistema
- SISTEMI DI TRATTAMENTO
- parlando
- Target
- Tech
- Le nozioni di base
- L’ORIGINE
- tempo
- top
- pista
- Trasparenza
- prova
- esercitazioni
- Università
- Università
- Aggiornanento
- Aggiornamenti
- utenti
- utilità
- APPREZZIAMO
- visualizzazione
- sito web
- applicazioni web
- Che cosa è l'
- OMS
- wikipedia
- vincere
- finestre
- Wire
- entro
- Lavora
- lavori
- scrittura
- X
- youtube