Flare gjør det enkelt å lage interaktive datavisualiseringer
For å begynne å lage dine egne visualiseringer, last ned bluss og arbeid gjennom veiledningen nedenfor. Trenger du mer hjelp? Besøk hjelp forum (du trenger en SourceForge logg inn for å legge inn).
Flare er programvare med åpen kildekode utgitt under en BSD-lisens, noe som betyr at den kan distribueres og endres fritt (og til og med selges for $$). Flares design ble tilpasset fra forgjengeren prefuse, et visualiseringsverktøy for Java.
applikasjoner
Kunngjøringer
- 2010.10.07: Flareutvikling har blitt åpnet for samfunnet, og kilden har flyttet fra SourceForge til et nytt hjem på GitHub. bluss 2009.01.24 er fortsatt den siste offisielle utgivelsen, og (i det minste foreløpig) reflekterer opplæringen og dokumentasjonen den. Utviklingsversjonen på GitHub inneholder nå bedre støtte for Flash Player 10, så vel som mange andre små reparasjoner og endringer.
- 2009.01.24: bluss 2009.01.24 har blitt utgitt. Dette er en vedlikeholdsutgivelse med en rekke feilrettinger og oppdateringer. Se utgiv notater for flere detaljer. Dette er den siste planlagte utgivelsen for Flash Player 9 - fremtidige versjoner migrerer til versjon 10.
- 2008.07.30: bluss 2008.07.29 har blitt utgitt. Dette er en stor utgivelse som introduserer mange nye funksjoner og arkitektoniske forbedringer. Se utgiv notater for mer informasjon.
- 2008.07.30: bluss 2008.08.08 har blitt utgitt. Denne utgivelsen inkluderer forbedret legendestøtte, navngitte overganger, feilrettinger og en refactoring for å redusere kobling og konsolidere verktøyklasser. Se utgiv notater for mer informasjon.
Opplæringen
En trinnvis veiledning for å lære ActionScript og Flare.
Komme i gang
Det første trinnet er å få utviklingsverktøyene dine satt opp.
- Sett opp et utviklingsmiljø for arbeidsblits Det er to tilnærminger. Vi anbefaler den første for enkelhets skyld, men mer avanserte brukere er velkomne til å bruke den andre tilnærmingen.
- Alternativ 1 (enklere): Installer Adobe Flex Builder.
- Dette er et fullt utviklingsmiljø for ActionScript / Flex-applikasjoner. Den er tilgjengelig for alle de store plattformene (Windows, Mac, Unix). Brukere som allerede bruker Eclipse IDE, kan også installere Flex Builder som en Eclipse-plugin.
- Advarselen ved å bruke Flex Builder er at det er kommersiell programvare og bare vil fungere i en begrenset prøveperiode. Adobe tilbyr imidlertid gratis Flex Builder-lisenser til universitetsstudenter, lærere og ansatte.
- Alternativ 2 (mer komplisert): Installer gratis Flex SDK
- Dette vil installere de grunnleggende ActionScript / Flex-kompilatorene:
mxmlc
ogcompc
. Du kan deretter sette opp ditt eget byggemiljø, for eksempel ved å brukemake
orant
bygge systemer. Flare er pakket med enbuild.xml
fil for bruk med Apache Ant bygge system. Når maur er installert, er det bare å åpnebuild.xml
fil i en teksteditor, endre de første par linjene for å peke på Flex SDK installasjon, og bruk deretterant
å samle bibliotekene. Vi bruker Adobe Labs 'mauroppgaver for Flex-utvikling. - Fordelen med denne tilnærmingen er at all programvaren er gratis, og ikke utløper for deg. Du mister imidlertid funksjoner som automatisk kompilering, prosjektledelse og automatisk fullføring levert av Flex Builder.
- Dette vil installere de grunnleggende ActionScript / Flex-kompilatorene:
- Alternativ 1 (enklere): Installer Adobe Flex Builder.
- Last ned prefuse flare-bibliotekene.
- Nedlastingen er en zip-fil som inneholder et sett med ActionScript-bibliotekprosjekter. Pakk ut filene i den primære arbeidsområdet katalogen hvis du bruker Flex Builder. I løpet av opplæringen vil vi importere dem til Flex Builder og bruke dem til å bygge visualiseringer!
- Programvaren er for tiden en alfaversjon, og det er derfor noen feil og begrensninger som kan forventes. Vi løser problemer så snart vi kan, og lenken ovenfor vil alltid peke på den nyeste versjonen.
Introduksjon til Flash og ActionScript 3
Flash er et flott miljø for interaktiv grafikk, og med det nylige tillegget av ActionScript 3-programmeringsspråket ble det bare mye kraftigere og mer effektivt. Mens en komplett introduksjon til AS3 ligger utenfor omfanget av denne opplæringen, er det noen ressurser du vil finne nyttige:
- Adobe gir en oversikt over AS3, med lenker til flere ressurser.
- Essential ActionScript 3 av Colin Moock fra O'Reilly Publishing er en flott bok som hjelper deg i gang. Du kan få tilgang til den online her (noen institusjoner, for eksempel universiteter, gir tilgang gratis).
- Adobe Flex API Reference er uvurderlig for å forstå de forskjellige klassene og metodene som er tilgjengelige. Vi vil bare fokusere på klassene i
flash.*
pakker.
Denne opplæringen forutsetter en grunnleggende kjennskap til ActionScript-syntaksen og -typene, samt begreper for objektorientert programmering.
Del 1: DisplayObjects
Introduksjon
Flash modellerer en 2D-visuell scene ved hjelp av en scenegraf. Visuelle objekter er organisert i et hierarki, med underordnede objekter definert i foreldrenes koordinatrom. Du vil ofte se dette scenegrafen referert til som visningsliste både i Adobes dokumentasjon og i bøker om Flash-programmering.
Noden øverst på skjermlisten er alltid Stage
gjenstand. Scenen har alltid ett og bare ett barn. Dette kalles root
, og alle visuelle gjenstander er under roten. Vanligvis er roten din faktiske Flash-applikasjon. Vi kommer snart tilbake til dette.
Alle visuelle elementer som kan legges til skjermlisten er forekomster av DisplayObject
klasse. Underklasser av DisplayObject
inkludere Bitmap
(for bilder), TextField
(for interaktive tekstområder), og Video
(tenk YouTube). De vanligste tilfellene er imidlertid Sprite
og Shape
klasser. Som referanse finner du de fleste av disse klassene i flash.display
pakken (men til slutt vil du sannsynligvis finne flash.text
pakke med bruk også).
De Sprite
klasse er det mest nyttige, generelle visuelle objektet som brukes av Flash Player. Sprites er visuelle objekter som inneholder både tegneinnhold og kan tjene som en beholder for undernoder i skjermlisten ( Sprite
klasse underklasser flash.display.DisplayObjectContainer
klasse). I kontrast, den Shape
klasse kan inneholde tegneinnhold, men kan ikke inneholde undernoder. Som et resultat bruker figurer mindre minne, men er mye mindre fleksible. For enkelhets skyld vil vi fokusere på Sprites i denne opplæringen.
Lag et nytt program
La oss først lage et nytt Flash-program. For å gjøre dette, åpne Flex Builder og sørg for at du er i perspektivet "Flex Development" (ofte nådd ved å klikke på det svarte og hvite "Fx" -ikonet øverst til høyre).
I "Navigator" -ruten til høyre høyreklikker du på skjermen og velger "Ny> ActionScript-prosjekt". I den resulterende dialogboksen skriver du inn "Opplæring" som prosjektnavnet, og klikker deretter på "Fullfør". Dette vil skape et nytt prosjekt for deg.
Du bør nå se en "Tutorial" -mappe i "Navigator" -ruten. Innenfor denne mappen skal du se en fil som heter “Tutorial.as”. Dette er din viktigste applikasjonsfil. Åpne den hvis den ikke allerede er åpen.
Inne i filen ser du det grunnleggende stillaset for denne klassen:
pakke {import flash.display.Sprite; public class Tutorial utvider Sprite {public function Tutorial () {}}}
Legg merke til at denne klassen utvider Sprite
klasse. Fordi dette er vår viktigste applikasjonsklasse, når vi kjører applikasjonen en forekomst av Tutorial
klasse vil automatisk bli lagt til skjermlisten som sin root
(det eneste barnet til Stage
).
Legg også merke til at en konstruktør er opprettet automatisk. Denne konstruktøren blir ringt når applikasjonen starter. For de som er kjent med programmeringsspråk som C, C ++ eller Java, fungerer konstruktøren for applikasjonsklassen omtrent som en main
fungerer på de andre språkene.
Med dette nye applikasjonsstillaset på plass kan vi begynne å leke med visuelle objekter. Imidlertid er det en ting vi først vil gjøre. Legg til en ny linje rett over klassedeklarasjonen (”public class Tutorial…
”) Linje som sier:
[SWF (width = "800", height = "600", backgroundColor = "# ffffff", frameRate = "30")]
Denne linjen definerer standardinnstillinger for applikasjonen din (som kompileres og lagres som en .swf-fil i prosjektets "bin" -katalog). Ovenfor setter vi størrelse, bakgrunnsfarge og målramme (i rammer per sekund) for applikasjonen vår.
sprites
Som alle DisplayObjects
, Sprite
støtter en rekke visuelle egenskaper rett ut av esken. Dette inkluderer x
, y
, scaleX
, scaleY
, rotation
og alpha
eiendommer. Disse endrer henholdsvis posisjonen, størrelsen, orienteringen og gjennomsiktigheten til en sprite (og alle dens barn! Husk, vi bruker et scenegraf her).
Imidlertid betyr ikke disse verdiene mye ennå, da sprites ikke inneholder noe som standard. Vi begynner med å tegne vårt eget innhold.
Hver Sprite har også en graphics
eiendom. Vi kan bruke dette til å tegne grafikk for Sprite
. De graphics
eiendom er en forekomst av flash.display.Graphics
klasse, som gir et antall vektortegningskommandoer.
I eksemplet nedenfor gjør vi en rekke ting.
- Først lager vi et nytt
Sprite
. - For det andre bruker vi sprite-ene
graphics
å tegne en sirkel med grått fyll og svart omriss.beginFill
angir gjeldende fyllfarge og stil. Det første argumentet er fargen, i heksenotasjon, og det andre argumentet er alfa-verdien, som varierer fra 0 for helt gjennomsiktig til 1 for fullstendig ugjennomsiktig.lineStyle
angir gjeldende strekfarge og stil. Det første argumentet er linjebredden, det andre argumentet er fargen.drawCircle
tegner en sirkel med radius 10 på punktet 0,0 i koordinatområdet til vår sprite.
- For det tredje legger vi til sprite som barn av vår hovedapplikasjon (a
Tutorial
sprite). - For det fjerde setter vi
x
ogy
posisjonen til vår sprite. - For det femte legger vi til noen feilsøkingsoutput.
trace
skriver ut en streng til konsollen. Denne utgangen vises bare når du kjører appen i “feilsøking” -modus.
Her er koden:
pakke {import flash.display.Sprite; [SWF (width = "800", height = "600", backgroundColor = "# ffffff", frameRate = "30")] public class Tutorial utvider 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; spor ("vår sprite er ved:" + sprite.x + "," + sprite.y); }}}
Kjør applikasjonen (høyreklikk på "Tutorial.as" og velg "Run As> Flex Application"). Du skal se en grå sirkel med svart omriss i øvre venstre hjørne, sentrert på punktet 50, 50. Hvis du kjører applikasjonen i feilsøkingsmodus (velg "Feilsøk som> Flex-applikasjon"), bør du også se strengen "vår sprite er på: 50, 50 ”i utgangskonsollen.
Nestede sprites
La oss nå gjøre scenen vår litt mer interessant. La oss starte med å flytte vår Sprite generasjonskode til en ny metode. Vi legger til denne metoden i klassen vår:
privat funksjon 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; retur sprite; }
Deretter erstatter vi koden i konstruktøren vår. Først oppretter vi en ny sprite kalt container som vi bruker til å holde en samling sirkler. Vi plasserer den i midten av scenen vår. For det andre bruker vi en løkke for å lage en haug med sirkler. Her stiller vi opp sirklene symmetrisk rundt 0,0-punktet til foreldrekontaineren. Den nye konstruktøren vår ser nå slik ut:
public function Tutorial () {var container: Sprite = new Sprite (); container.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)); }}
Kjør den nye versjonen av applikasjonen. Du bør se en linje med ti sirkler midt i applikasjonen.
Vi kan nå endre beholderen for å oppdatere alle kretsene i den. Prøv å spille med å sette forskjellige visuelle variabler på container sprite. For eksempel endre x
, y
, scaleX
, scaleY
, rotation
og alpha
egenskaper.
Andre emner
Det er mye mer du kan gjøre med de grunnleggende alternativene Flash gir. Dessverre er de litt utenfor det vi har tid til her. Noen ting å utforske inkluderer bildefiltre (se flash.filters
pakke), som lar deg legge til visuelle effekter for å vise objekter ved hjelp av deres filters
eiendommen, og de forskjellige alternativene som er tilgjengelige i flash.display.Graphics
klasse, inkludert fyll- og linjestiler, og mange flere 2D-tegningsrutiner.
Del 2: Animasjoner
Nå som vi kan lage visuelle objekter, er det på tide å begynne å gi dem litt liv. Flare inkluderer flare.animate
pakke for å gjøre dette enkelt. Først må vi importere blussbibliotekene for bruk i Flex Builder.
Importerer biblioteker
Før du fortsetter, må du sørge for at blussbibliotekene er lastet inn som prosjekter i Flex Builder. Du burde allerede ha pakket ut flare-filene i hovedkatalogen til Flex Builder-arbeidsområdet. Neste trinn er å importere dem til Flex Builder-miljøet:
- Forsikre deg om at du er i “Flex Development” perspektivet.
- Høyreklikk navigasjonsruten til venstre.
- Velg "Importer ..." i popup-menyen.
- I dialogboksen velger du “Generelt> Eksisterende prosjekter i arbeidsområdet” og klikker på “Neste” -knappen.
- Bruk "Velg rotkatalog" -programvare for å navigere til Flex Builder-arbeidsområdet
- Du skal nå se blussprosjektene oppført i "Prosjekter:" -panelet.
- Velg "flare" og "flare.demos" -prosjektene, og klikk deretter på "Finish" -knappen.
Du skal nå se blussprosjektene i Navigator-ruten. Du kan nå bla gjennom kildekoden for både biblioteket og demoer.
Oversikt over blussbiblioteket
Her er en rask oversikt over blussverktøysettet. Inne i flare
prosjekt, se inne i "src / flare" -mappen. Du finner en rekke pakker som gir forskjellige funksjoner:
analytics
: operatører for databehandling og analyse av dataanimate
: verktøy for å lage animasjonerdata
: metoder for lesing og skriving av datasettdisplay
:DisplayObject
typer som utvider de som tilbys avflash.display
flex
: en innpakning for å legge inn Flare-visualiseringer i Flex-applikasjonerphysics
: en fysikkmotor for fysiske effekter eller tvangsrettet layoutquery
: en spørringsprosessor for ActionScript-objekterscale
: klasser for håndtering av dataskalaer, for eksempel lineære, logg- og tidsskalaerutil
: et sett med nytteklasser som gir ofte nødvendige funksjonervis
: flare visualiseringskomponenter og operatører
Det er også flare.demos
prosjekt, som gir en rekke eksempler på hvordan du lager Flare-komponenter.
Importerer et bibliotek i et annet prosjekt
For å gjøre bruk av bluss i dine egne prosjekter, må du oppdatere prosjektinnstillingene. Slik gjør du det:
- I Navigator-ruten høyreklikker du den øverste mappen i “Tutorial” -prosjektet
- Klikk "Egenskaper" i hurtigmenyen
- I den resulterende dialogboksen klikker du på "ActionScript Build Path" i venstre panel (det skal være det tredje elementet fra toppen)
- Klikk på "Biblioteksti" -fanen i høyre panel
- Klikk på knappen "Legg til prosjekt"
- Du bør nå se en liste over prosjekter, inkludert bluss.
- Velg "bluss" og klikk deretter "OK"
Du har nå lagt til blussbibliotekene i prosjektet ditt, og kan bruke alle klassene det gir.
En ting å merke seg om Flex-kompilatoren - som standard inkluderer den bare klassene du faktisk bruker i applikasjonen din. Så selv om du importerer et veldig stort bibliotek, kan størrelsen på den endelige .swf-filen fortsatt være ganske liten. Vær imidlertid oppmerksom på at dette kan forårsake problemer hvis du bruker refleksjon for å utføre dynamisk klasselasting i applikasjonen din (en mer avansert funksjon som ikke er dekket i denne opplæringen).
Grunnleggende animasjon: Tween, sekvens og parallell
Ok, la oss nå animere! De flare.animate.Transition
klasse er basisklassen for alle animasjoner. Viktige underklasser av Transition
er Tween
, Sequence
og Parallel
overganger. Tweens brukes til å animere egenskaper til et enkelt objekt. Sekvenser brukes til å kjøre en serie animasjoner i rekkefølge. Parallelle overganger kjører en samling overganger samtidig. La oss starte med Tween.
Egenskaper for Tweening -objekter
Grunnleggende i Tween-klassen er enkle: vi tar et objekt, gir et sett med eiendomsverdier vi vil endre over tid, og spesifiserer tidsvarigheten for den endringen. Ved å bruke opplæringsprogrammet fra del 1, la oss rotere containerobjektet. Legg til følgende linje på slutten av opplæringsklassekonstruktøren:
var tween: Tween = new Tween (container, 3, {rotation: 360}); tween.play ();
Sørg også for at du har en ny importerklæring øverst i klassen, slik at kompilatoren vet hva du snakker om. Legg dette til importlisten:
import flare.animate.Tween;
(MERK: Noen ganger vil Flex Builder automatisk legge til en importerklæring for deg når du skriver inn et nytt klassenavn. Hvis ikke, er en annen teknikk å sette tekstmarkøren på slutten av det nye klassenavnet og skriv "Ctrl-Space" - dette skal skape en ny import for deg for klassen.)
Kjør nå søknaden din - punktene skal rotere i en sirkel over en periode på 3 sekunder.
Her er hva Tween-konstruktøren gjør:
- Det første argumentet er objektet hvis verdier skal være mellom
- Det andre argumentet er lengden på animasjonen, i sekunder
- Det tredje argumentet er en objektforekomst som viser eiendommene som skal animeres og deres målverdier.
- Eiendomsnavnene må nøyaktig matche egenskapene til inngangsobjektet.
- Nestede eiendommer er tillatt, men må være vedlagt tilbud. For eksempel,
{“data.profit”:50}
er et lovlig innspill hvis inngangsobjektet har en eiendom som heter data som igjen har en eiendom som heter fortjeneste.
De play
deretter kjører animasjonen. De play
metoden kan også kalles med en enkelt boolsk parameter som indikerer om animasjonen skal kjøres i omvendt eller ikke.
Du har kanskje lagt merke til at rotasjonsanimasjonen viser en viss akselerasjon. Dette er fordi standardinnstillingen for Tween
tilfeller er å bruke animasjon med "slow-in slow-out". Du kan kontrollere denne oppførselen ved hjelp av Easing
funksjoner. Disse funksjonene tar som input den nåværende animasjonsfremdriften som en brøkdel mellom 0 og 1. De returnerer deretter en manipulert fremdriftsbrøk for å endre animasjonens tempo, ofte på en ikke-lineær måte.
For å fjerne lettelser (dvs. bruke en lineær lettelsesfunksjon) kan du skrive: tween.easing = Easing.none
. Bare sørg for at du importerer flare.animate.Easing
klasse øverst i filen.
Eksperimenter gjerne med andre lettelsesfunksjoner. For eksempel kan lettelsesfunksjoner innebære lettelse (bare manipulere starten på animasjonen), lette (manipulere bare slutten på animasjonen), eller begge deler. Prøv for eksempel dette: tween.easing = Easing.easeOutBounce
. Dette skal få rotasjonen til å sprette på slutten.
Før du går videre, kan du prøve å animere andre egenskaper til containeren, for eksempel posisjons-, skala- eller alfaverdier.
Sammensatte animasjoner
De Sequence
og Parallel
klasser lar deg gruppere animasjoner sammen. Sequence kjører et sett med animasjoner etter hverandre. Prøv for eksempel dette:
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: Sekvens = ny Sekvens (ny Parallell (t1, t2), ny Parallell (t3, t4)); seq.play ();
Du må også legge til noen nye importuttalelser øverst i filen:
import flare.animate.Parallell; import flare.animate.Sequence;
Dette skaper fire tweens: t1
, t2
, t3
og t4
. Deretter skaper det to parallelle overganger som kjører t1
og t2
sammen og løpe t3
og t4
sammen. De parallelle overgangene kjøres deretter etter hverandre i en sekvens. På denne måten er det enkelt å bygge mer kompliserte animasjoner.
For mer avanserte komposittanimasjoner, ta en titt på FlareLogo
og flare.demos.Animation
klasser i flare.demos
prosjekt.
Batch-animasjon med overganger
Bruke Tween
, Parallel
og Sequence
klasser, kan du lage et hvilket som helst antall animerte overganger. Men når du arbeider med store samlinger av objekter (vanlig i visualisering), kan det være vondt å håndtere et lignende stort sett tweens manuelt. Videre bør det være enkelt å kjøre separate rutiner for koding av visuelle egenskaper som layout, farge, størrelse, form og ikke trenger å bekymre deg for å håndtere animasjon. Kanskje du vil animere endringer, eller kanskje du vil ha en statisk oppdatering. Uansett bør du kunne bruke samme kode for å tildele verdier.
For å imøtekomme disse bekymringene, tilbyr Flare Transitioner
klasse. Overgangere forenkler prosessen med å lage animasjoner for samlinger av objekter. Du tar ganske enkelt et objekt og setter de ønskede egenskapene en etter en. Bak kulissene vil overgangen automatisk generere og bruke de nødvendige tweens for å modellere hele animasjonen. Videre, hvis animasjon ikke er ønsket, kan overgangen konfigureres til å i stedet sette eiendomsverdiene umiddelbart. Kort sagt, overgangen gir et lag med indireksjon for oppdatering av objektegenskaper - disse oppdateringene kan samles og deretter animeres, eller brukes umiddelbart.
Her er et enkelt eksempel på bruk av en overgangsapparat i opplæringsappen vår.
var t: Overganger = ny overganger (2); for (var j: int = 0; j
Dette eksemplet animerer alle sprites i container
til en ny tilfeldig y
posisjon og tilfeldig vertikal skaleringsfaktor. Vi oppretter først en ny Transitioner
det skulle skape en 2 sekunders animasjon. Vi går deretter gjennom hvert barns sprite og bruker overgangen til å sette egenskapene til Tween.
Overgangen $
operator indikerer at vi vil sette en målverdi for inngangsobjektet. Som standard, enten en ny Tween
er opprettet, eller en eksisterende Tween
er funnet for den gjeldende varen. De $
operatøren returnerer deretter et objekt som tweenens målegenskap skal settes på.
Videre kan overgangsbrukere brukes til å lage statiske (ikke-animerte) overganger. Hvis en overgangs immediate
egenskapen er satt til sant, den vil ikke opprette nye tweens. I stedet vil $ -operatøren ganske enkelt returnere inngangsverdien. Dette betyr at du kan opprette metoder som oppdaterer verdier ved hjelp av en overganger, og deretter senere kontrollere om du vil at disse verdiene skal oppdateres eller ikke. Standard "umiddelbar modus" Transitioner
hentes ved hjelp av det statiske Transitioner.DEFAULT
eiendom. På den måten trenger du ikke å tildele et nytt Transitioner
når du utfører umiddelbare oppdateringer.
Overganger brukes mye i hele flare.vis
pakke, slik at visualiseringsdesignere kan kontrollere hvilke oppdateringer som skal animeres og hvordan.
Del 3: Visualiseringer
Laster inn data
Den grunnleggende datarepresentasjonen for Flare bruker ganske enkelt de innebygde Flash-datatypene: Object
og Array
. For eksempel kan en datatabell bare representeres som en rekke objekter, som hvert objekt inneholder navnene og verdiene til hvert datafelt. Selv om mer effektive representasjoner er mulige, gir denne tilnærmingen størst fleksibilitet, samtidig som den utnytter eksisterende Flash-utviklingskonvensjoner.
For å laste inn data i Flash-spilleren, er det en rekke tilnærminger. En enkel tilnærming er å legge inn dataene dine i selve applikasjonen. På den måten blir dataene lastet ned sammen med applikasjonen, noe som er greit for statiske datasett. For eksempel kan du bruke ActionScript-objektnotasjon til å definere datasettet direkte som en variabel:
var data: Array = [{id: "Q1", salg: 10000, fortjeneste: 2400}, {id: "Q2", salg: 12000, fortjeneste: 2900}, {id: "Q3", salg: 15000, fortjeneste : 3800}, {id: "Q4", salg: 15500, fortjeneste: 3900}];
I mange tilfeller vil du imidlertid laste inn dataene dine dynamisk, enten fra en webside (du kan bruke JavaScript i nettleseren til å overføre verdier til Flash), eller fra en server på internett. Det er mange tilnærminger for å gjøre dette, og du bør velge det som fungerer best for din spesifikke applikasjon. ActionScript gir for eksempel flere datatyper og syntaks for å jobbe med XML data ved hjelp av ECMAScript for XML (E4X) standard.
Flare tilbyr også noen verktøy for lasting av eksterne datasett. Den støtter lasting av data fra hvilken som helst server på internett og konvertering av dataene til interne ActionScript-objekter. De nåværende støttede filformatene er tabulatoravgrenset tekst (“tab”, et standard filformat for eksport av data fra verktøy som Excel), JavaScript Objekt Notation (“Json”, et vanlig dataformat for webapplikasjoner), og GraphML (“Graphml”, en XML format for å representere nettverk med noder og kanter).
Eksterne data lastes inn med bluss ved hjelp av flare.data.DataSource
klasse. Her er et eksempel på hvordan du bruker den til å laste inn en datafil med tabulatoravgrensning:
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 {// function to handle data once loading is complete var ds: DataSet = loader.data as DataSet; // gjør nå noe med dataene ...} );
De DataSource
konstruktøren har to nødvendige argumenter: url til datasettet, og en streng som indikerer filformatet. Akkurat nå er de støttede formatene “tab” (tabulatordelt avgrenset), “json” (JavaScript Object Notation) og “graphml” (GraphML).
For datasett hvis skjema (navnene og datatypene til feltene) kan være uklare, er det også et tredje, valgfritt konstruktørargument som tar en DataSchema
type. Se flare.data.DataSchema
og flare.data.DataField
klasser for mer. Skjemaet kan være nyttig for å sikre at dataverdiene er riktig navngitt (f.eks. For en fane-avgrenset fil som mangler en headerrad) og konverteres til de riktige datatypene (f.eks. For JSON-data der numeriske verdier ble pakket inn i anførselstegn).
For å laste dataene, kalles DataSource-belastningsmetoden og returnerer en flash.net.URLLoader
forekomst. Lasteren kan brukes til å spore fremdriften for nedlastingen (f.eks. Hvis du vil gi en fremdriftslinje) og gir en varslingshendelse når nedlastingen er fullført. I eksemplet ovenfor legger vi til en hendelseslytter som skal varsles når nedlastingen er fullført. De DataSource
vil automatisk analysere inngangsdataene, kartlegge dem i ActionScript-objekter og lagre resultatene i en flare.data.DataSet
gjenstand. De DataSet
klasse kan representere både tabell- og nettverksdata (node / kant).
Opprette og administrere visuelle objekter
Nå vil vi visualisere et datasett. For å gjøre dette kartlegger vi individuelle dataposter i visuelle elementer. Flare gir et sett med visuelle objekter som skal representere dataene. Her er en oversikt over de grunnleggende klassene som tilbys av flare.vis.data
pakke.
DataSprite
: Baseklasse for sprites som visuelt representerer data.DataSprite
er en underklasse av Flash PlayerSprite
klasse.DataSprite
inkluderer adata
egenskap der datatupelen (et ActionScript-objekt) er lagret og gir også flere visuelle variabler utover de som støttes av grunnleggende sprites, inkludert felt for farge, form og størrelse, og støtte for å sette posisjoner i polare koordinater.NodeSprite
:DataSprite
forekomst som representerer en node. Dette er standardtypen som brukes til å visualisere data.NodeSprite
tilfeller kan kobles til i nettverk eller trestrukturer avEdgeSprite
tilfeller.EdgeSprite
:DataSprite
forekomst som representerer en kant. AnEdgeSprite
forbinder toNodeSprites
. Nodene er tilgjengelige gjennomsource
ogtarget
egenskaper.EdgeSprites
brukes til å lage grafer og trær, samt å representere linjer, for eksempel i tidsseriegrafer.
Vanligvis blir NodeSprites og EdgeSprites opprettet og lagret i flare.vis.data.Data
klasse, som administrerer alle de visuelle elementene for en enkelt visualisering. De Data
klasse gir metoder for å lage nye visuelle objekter for datatupler og for å representere en grafstruktur.
De Data
klasse gir også metoder for å krysse og oppdatere de inneholdte dataelementene. De nodes
og edges
egenskaper returnerer lister over noder og kanter som finnes i dataene. Hver av disse listene inkluderer en visit
metode som lar deg sende inn en funksjon som deretter vil bli kalt med hver node eller kant. Også, den setProperty
og setProperties
metoder lar deg angi eiendomsverdier for alle noder eller kanter samtidig. Disse metodene tar valgfritt en Transitioner
som et argument, slik at du kan animere eiendomsoppdateringen.
Følgende kode resulterer for eksempel i en animasjon på ett sekund der linjefargen for alle noder er satt til blå. (Legg merke til at heksenotasjonen for DataSprite
fargeverdier inkluderer alfa samt røde, grønne, blå kanaler).
data.nodes.setProperty ("lineColor", 0xff0000bb, ny overganger (1)). play ();
Node- og kantlister støtter også standardegenskapsverdier ved hjelp av setDefault
, setDefaults
, removeDefault
og clearDefaults
metoder. Standardverdier vil bli satt på en node eller kant som er nylig opprettet ved hjelp av dataklassen addNode
or addEdgeFor
metoder.
De Tree
klasse er en underklasse av Data
, spesialisert på å representere et tre i stedet for en generell graf. De Data
klasse støtter automatisk opprettelse av en Tree
eksempel ved å beregne spennende trær i en generell graf. En rekke metoder for oppretting av spennende tre - inkludert bredde først, dybde først og minimum algoritmer for spennende tre - kan sendes inn som parameter. Disse beregningene utføres ved hjelp av flare.analytics.graph.SpanningTree
klasse.
For å faktisk lage node- og kanteobjekter bruker vi addNode
og addEdgeFor
metoder.
addNode
tar en inngangsdata tuple (enObject
) og skaper et nyttNodeSprite
for å visualisere dataene.addEdgeFor
tar to eksisterendeNodeSprites
og legger til enEdgeSprite
koble dem sammen. Metoden unntar også valgfritt en datatupel (igjen, enObject
som representerer eventuelle datafelter) for kanten.
Her er et enkelt eksempel for å lage NodeSprites
for et datasett i tabell, forutsatt at vi har en rekke dataobjekter:
var liste: Array; // en rekke dataobjekter vi allerede har lastet inn var data: Data = new Data (); // en ny databeholder for hver (var o: Objekt i liste) {data.addNode (o); }
Resultatet er en Data
objekt befolket med visuelt DataSprite
(noder eller kanter) forekomster.
I praksis trenger du ikke alltid å fylle ut de visualiserte dataene manuelt. Å lage en Data
objekt for å visualisere et lastet datasett, kan du ofte bruke en praktisk metode i stedet. De Data.fromArray()
funksjon skaper en Data
forekomst for tabelldata som er lagret som en rekke ActionScript-objekter, mens Data.fromDataSet()
metoden skaper på samme måte en Data
forekomst fra en lastet DataSet
gjenstand.
Konstruere en visualisering
La oss nå sette alt sammen for å begynne å lage visualiseringer. De Visualization
klasse representerer en enkelt visualisering, inkludert visuelle merker (lagret i en Data
forekomst) og akser. For å lage en visualisering laster vi inn et datasett, legger til dataene i en visualisering og setter opp operatører som bestemmer hvordan dataene skal visualiseres. Her er et eksempel. Se først over koden, og les videre for å forstå hva hver del gjør.
pakke {import flare.data.DataSet; importere flare.data.DataSource; import flare.scale.ScaleType; import flare.vis.Visualisering; importere flare.vis.data.Data; importere flare.vis.operator.encoder.ColorEncoder; importere flare.vis.operator.encoder.ShapeEncoder; import flare.vis.operator.layout.AxisLayout; importere flash.display.Sprite; importere flash.events.Event; importere flash.geom.Rectangle; importere flash.net.URLLoader; [SWF (width = "800", height = "600", backgroundColor = "# ffffff", frameRate = "30")] Opplæring i offentlig klasse utvider Sprite {private var vis: Visualization; offentlig funksjon Tutorial () {loadData (); } privat funksjon loadData (): ugyldig {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));}); } visualisere privat funksjon (data: Data): ugyldig {vis = ny Visualisering (data); vis.bounds = nytt rektangel (0, 0, 600, 500); vis.x = 100; vis.y = 50; addChild (vis); vis.operators.add (ny AxisLayout ("data.date", "data.age")); vis.operators.add (ny ColorEncoder ("data.cause", Data.NODES, "lineColor", ScaleType.CATEGORIES)); vis.operators.add (ny ShapeEncoder ("data.race")); vis.data.nodes.setProperties ({fillColor: 0, lineWidth: 2}); vis.update (); }}}
La oss se på hver metode.
Konstruktøren er enkel: den kaller bare loadData
metoden.
De loadData
metoden oppretter en ny datakilde og laster den ved hjelp av metodene som er beskrevet tidligere. I dette tilfellet rapporteres datasettet om drap i Los Angeles fylke i 2007, lagret i tabulatoravgrenset format. Når belastningen er fullført, legges de lastede datatuplene til a Data
eksempel bruker fromDataSet
bekvemmelighetsmetode. Under panseret resulterer dette i opprettelsen av NodeSprites
for å visualisere hvert dataelement. Til slutt, visualize
metoden kalles.
De visualize
metoden setter opp visualiseringen. Her er hva som skjer i hvert trinn:
- Del 1: Initialisering
- En ny visualisering opprettes for dataene
- Vi setter grensene for visualisering. Dette bestemmer layoutområdet.
- Vi setter inn
x
ogy
posisjonen til visualiseringen vår og legge visualiseringen til visningslisten.
- Del 2: Spesifisere visuelle kodinger
- Vi bruker en akselayout, og plasserer "dato" på x-aksen og "alder" på y-aksen. De
AxisLayout
operatøren konfigurerer også aksene automatisk for visualisering. Vi bruker syntaksen "data.date" for å betegne datavariablene, da de er plassert iNodeSprite
'sdata
eiendom. - Vi legger til en fargekoding, slik at en nodes linjefarge representerer varianten “årsak” (dødsårsak). Vi forteller også fargekoderen at verdiene til "årsaken" -variabelen representerer kategorier (
ScaleType.CATEGORIES
). Fargekoderen vil bruke denne informasjonen til automatisk å velge en passende fargepalett. Som vi snart vil se, kan du også tilby din egen fargepalett. - Vi legger til en formkoding, slik at et objekts form representerer “raset” til et offer.
- Vi setter standardegenskaper - vi setter nodenes fyllfarge til full gjennomsiktig, og setter linjebredden til 2 piksler.
- Til slutt kaller vi
update
metode. Dette kjører alle operatørene i orden.
- Vi bruker en akselayout, og plasserer "dato" på x-aksen og "alder" på y-aksen. De
Oppdatere en visualisering
Når en visualisering er opprettet, vil vi kanskje oppdatere den. For eksempel, kanskje vi vil endre fargekodingen for å i stedet visualisere folks kjønn.
La oss først legge til en ny metode i klassen:
privat funksjon colorByGender (): ugyldig {var color: ColorEncoder = ColorEncoder (vis.operators [1]); color.source = "data.sex"; color.palette = ny ColorPalette ([0xffff5555, 0xff8888ff]); vis.update (ny overganger (2)). spill (); }
Denne metoden:
- Henter den andre operatoren (operatoren i indeks 1) og kaster den til a
ColorEncoder
- Endrer
source
egenskap for fargekoderen å bruke variabelen “data.sex” - Angir en ny fargepalett (i dette tilfellet rød for kvinner, blå for menn - fargevalget samsvarer med alfabetisk rekkefølge på etikettene)
- Animerer endringen ved å ringe oppdatering med en
Transitioner
satt for en to sekunders animasjon. Devis.update
metoden returnererTransitioner
, slik at vi kan ringe play på returverdien av oppdateringen. (Merk: du kan også utelateTransitioner
og bare gi nummer 2 som argument tilupdate
. En nyTransitioner
vil bli opprettet automatisk og returnert.)
Nå må vi koble opp applikasjonen slik at vi interaktivt kan utløse oppdateringen. For å gjøre dette, legg til følgende kode i konstruktøren:
// legg til en klikkbar etikett var-knapp: TextSprite = ny TextSprite ("Farge etter kjønn"); addChild (knapp); knapp.x = 710; knapp.y = 50; button.buttonMode = true; button.addEventListener (MouseEvent.CLICK, function (evt: MouseEvent): void {colorByGender ();});
Denne koden:
- Oppretter en ny tekstetikett (
TextSprite
er en hjelperklasse fraflare.display
pakke) - Legger til etiketten i applikasjonen og angir posisjonen
- sett
buttonMode
til sant (dette får en håndmarkør til å vises når du holder musen over etiketten) - Legger til en hendelseslytter som utløses når du klikker på etiketten. Vi legger til en tilbakeringingsfunksjon som kaller
colorByGender
metoden.
For at ovennevnte kode skal fungere, må vi ta med disse tilleggsimportuttalelsene øverst i filen:
importere flash.events.MouseEvent; import flare.animate.Transitioner; import flare.display.TextSprite; import flare.util.palette.ColorPalette;
Nå skal du kunne kompilere og kjøre applikasjonen. Ved å klikke på "Farge etter kjønn" -etiketten, bør animasjonen endres i fargekoding.
Neste trinn
Ovennevnte eksempler viser det grunnleggende om Flash og Flare-biblioteket, men det er mange flere funksjoner som ennå ikke er dekket. Fremover anbefaler vi (a) å inspisere både Flash og Flare API dokumentasjon for å få en følelse av alle tilgjengelige klasser, og (b) grave gjennom Flare-demoer for å se hvordan de samme prinsippene som vises her kan brukes til å konstruere en rekke andre visualiseringer. Eller enda bedre, grav gjennom Flare-kildekoden for å lære hva som skjer under panseret.
For å hjelpe i denne prosessen, er det en generell oversikt over delpakker i flare.vis
:
flare.vis.axis
: gir akser, etiketter og rutenettflare.vis.controls
: interaksjonshåndterere for valg, zooming og merflare.vis.data
: visuelle objekter som representerer dataelementerflare.vis.data.render
: pluggbare gjengivere som tegnerDataSprites
flare.vis.events
: hendelsestyper som brukes i flammerammenflare.vis.legend
: representerer legender for å beskrive visuelle kodingerflare.vis.operator
: byggesteiner for å definere visualiseringerflare.vis.palette
: paletter for verdier for farge, form og størrelseflare.vis.util
: generelle nytteklasser
Du bør nå vite nok til å gi mening om demoer i flare.demos
pakke. Lek gjerne, modifiser, kopier, lim inn og bygg på demoer for å få en bedre forståelse av hvordan Flash og Flare fungerer.
lenker
Nedlastinger
verktøy
Andre tekniske guider
Støtte
- 100
- 7
- 9
- adgang
- Ytterligere
- Fordel
- Alle
- tillate
- Amazon
- analytics
- Kunngjøringer
- api
- app
- Søknad
- søknader
- AREA
- argumenter
- rundt
- Grunnleggende
- Bak scenen
- BEST
- Bit
- Svart
- bøker
- Eske
- nett~~POS=TRUNC leseren~~POS=HEADCOMP
- Bug
- bugs
- bygge
- bygger
- Bygning
- Bunch
- ring
- saker
- Årsak
- endring
- kanaler
- barn
- Circle
- kode
- kommersiell
- Felles
- samfunnet
- databehandling
- Container
- innhold
- fylke
- Par
- Opprette
- Gjeldende
- dato
- datasett
- håndtering
- utforming
- Utvikling
- utviklingsverktøy
- lettelser
- Edge
- redaktør
- Miljø
- Event
- hendelser
- Excel
- eksperiment
- Mote
- Trekk
- Egenskaper
- Felt
- filtre
- Endelig
- slutt
- Først
- Fix
- Blitz
- fleksibilitet
- Fokus
- format
- Forward
- Gratis
- fullt
- funksjon
- framtid
- Kjønn
- general
- Giving
- grå
- flott
- Grønn
- Gruppe
- Håndtering
- her.
- hold
- Hjemprodukt
- Hvordan
- Hvordan
- HTTPS
- ICON
- bilde
- Inkludert
- indeks
- informasjon
- institusjoner
- interaksjon
- interaktiv
- Internet
- saker
- IT
- Java
- Javascript
- etiketter
- Språk
- språk
- stor
- lanseringer
- ledende
- LÆRE
- læring
- Lovlig
- Bibliotek
- Tillatelse
- lisenser
- Begrenset
- linje
- LINK
- Liste
- oppføring
- lister
- laste
- Los Angeles
- mac
- større
- Making
- ledelse
- kart
- Match
- math
- modell
- navn
- nett
- nettverk
- nettverk
- Nye funksjoner
- noder
- varsling
- offisiell
- på nett
- åpen
- alternativer
- rekkefølge
- Annen
- Smerte
- perspektiv
- Fysikk
- Plattformer
- spiller
- privatliv
- privat
- Profit
- Programmering
- programmerings språk
- prosjekt
- prosjektledelse
- prosjekter
- eiendom
- offentlig
- Publisering
- Q1
- Race
- Lesning
- poster
- redusere
- ressurs
- Ressurser
- Resultater
- avkastning
- reversere
- Kjør
- rennende
- salg
- Skala
- forstand
- Serien
- sett
- innstilling
- Kjønn
- Kort
- Enkelt
- Størrelse
- liten
- So
- Software
- programvareutvikling
- solgt
- Rom
- Scene
- standarder
- Begynn
- startet
- Uttalelse
- statistikk
- oppbevare
- støtte
- Støttes
- Støtter
- system
- Systemer
- snakker
- Target
- tech
- Grunnleggende
- Kilden
- tid
- topp
- spor
- Åpenhet
- prøve
- tutorials
- universiteter
- universitet
- Oppdater
- oppdateringer
- Brukere
- verktøyet
- verdi
- visualisering
- web
- nettapplikasjoner
- Hva er
- HVEM
- Wikipedia
- vinne
- vinduer
- Metalltråd
- innenfor
- Arbeid
- virker
- skriving
- X
- youtube