Opprette generativ kunst med HYPE

Under denne opplæringen skal vi knytte matematikk og design sammen. Vi vil utforske Branden Hall og Joshua Davis 'HYPE rammeverk og lage generativ kunst fra kode.


Endelig resultatforhåndsvisning

La oss se på det endelige resultatet vi vil jobbe for:


Trinn 1: Prosjektstruktur

Før du dykker hodet i koden, la oss ta et kort øyeblikk for å gjøre oss kjent med prosjektfilene.

I kilden. Zip-filen finner du en mappe for hvert signifikant trinn, slik at du kan se nøyaktig hvilke endringer som er gjort. Du finner også en mappe som heter Base, lage en kopi av denne mappen, da dette vil fungere som utgangspunkt.

I Base-mappen har vi en bin mappe der vår SWF vil bli publisert. EN src mappe som inneholder våre ActionScript 3 og Flash-filer og til slutt a lib mappe der vi skal lagre HYPE-rammeverkets SWC-filer.


Trinn 2: Få HYPE

Deretter må vi ta den nyeste versjonen av HYPE-rammen fra sitt hjem på www.hypeframework.org.

Når nedlastingen er fullført, åpner du .zip-filen. Du finner to SWC-filer som heter hype-framework.swc og hype-extended.swc. Kopier begge disse til Base \ lib-mappen din.

Disse SWC-filene er egentlig en samling av kildefiler for rammen, alle rullet inn i en fil for enkelhet.


Trinn 3: Legge til SWCS i Flash

Det siste skrittet som trengs for å få alt i gang, er å fortelle Flash å se etter de to nye SWC-filene når vi kompilerer filmen, ellers vil det kaste en hel rekke feil på vår måte, ikke hyggelig!

Åpne Main.fla inne i Base \ src mappe, velg deretter Fil, Publiser innstillinger. Velg Flash-fanen som vist, i det nye vinduet som åpnes, velg fanen Bibliotekspass.

Trykk på "Browse TO SWC" File-knappen og fortsett å legge til begge SWC-filer i Flash-filen. Når dette er ferdig, er det på tide å begynne å legge til noe kode!


Trinn 4: Init HYPE

Åpne kilden til Main.as i den valgte redigeringen. Legg til følgende private egenskaper og initHype () metode:

 offentlig klasse Main utvider MovieClip // private egenskaper private var bitmapCanvas: BitmapCanvas; privat var clipContainer: Sprite; private var objectPool: ObjectPool; / ** * konstruktør * / offentlig funksjon Hoved () // angir Hype-rammen initHype ();  / ** * igangsetting av Hype-medlemmene vi skal bruke og konfigurasjon tidligere * for å kjøre animasjonen * / privat funksjon initHype (): void // klippet Container brukes som foreldre for alle våre objekter clipContainer = new Sprite (); addChild (clipContainer); 

I de neste trinnene ser vi på hver av disse objektene vi har lagt til som private eiendommer, fra og med clipContainer Sprite.

Siden vårt design skal ha over hundre objekter som alle beveger seg rundt på skjermen samtidig, trenger vi noe for å huske dem alle - bare å legge dem til Scene blir problematisk lenger nedover linjen. Svaret er å skape en vanlig AS3 Sprite å opptre som foreldre.


Trinn 5: BitmapCanvas

Den første virkelige delen av HYPE, the BitmapCanvas kan betraktes som en Sprite eller enda bedre, a Bitmap / BitmapData som vi skal male våre objekter, hver ramme, som et malere lerret.

Vi lager den like under klippet Container-kode og definerer den med bredde og høyde for å matche Scene. Vi legger til den i Scene men også fortelle det til startCapture (clipContainer, true), dette forteller bare BitmapCanvas å ta et øyeblikksbilde av clipContainer hver ramme. For nå skjønt, hold dette kommentert!

 / ** * igangsetting av Hype-medlemmene vi skal bruke og konfigurasjon tidligere * for å kjøre animasjonen * / privat funksjon initHype (): void // klippet Container brukes som foreldre for alle våre objekter clipContainer = ny Sprite ); addChild (clipContainer); // tenk på BitmapCanvas som et tomrom vi vil 'male' // hver ramme med nye bilde data bitmapCanvas = nytt BitmapCanvas (stage.stageWidth, stage.stageHeight); //bitmapCanvas.startCapture(clipContainer, true); addChild (bitmapCanvas); 

Trinn 6: ObjectPool

Hvis du har jobbet med spill, har du sannsynligvis kommet over begrepet an ObjectPool. Ettersom du oppretter nye objekter, er for mye av en treff på prosessoren, lager vi et basseng av en spesifisert mengde objekter før spillet eller applikasjonen begynner. Vi ville da bruke gjenstandene fra dette bassenget og ved å løpe ut, ville vi resirkulere og gjenbruke dem alle igjen, noe som unngår å skape nye gjenstander. Dette brukes ofte til kuler / lasere i spill og samme logikk brukes i HYPE.

Hvis du ser på Main.fla-biblioteket i Flash, ser du at jeg har opprettet en Filmklipp kalt circleShape og gitt den Linkage Identifier of circleShape slik at vi kan lage flere kopier av dette objektet med kode; dette er hva vår ObjectPool vil huske.

Legg til ObjectPool under BitmapCanvas-koden, slik som:

 / ** * igangsetting av Hype-medlemmene vi skal bruke og konfigurasjon tidligere * for å kjøre animasjonen * / privat funksjon initHype (): void // klippet Container brukes som foreldre for alle våre objekter clipContainer = ny Sprite ); addChild (clipContainer); // tenk på BitmapCanvas som et tomrom vi vil 'male' // hver ramme med nye bilde data bitmapCanvas = nytt BitmapCanvas (stage.stageWidth, stage.stageHeight); //bitmapCanvas.startCapture(clipContainer, true); addChild (bitmapCanvas); // lage en samling av 10 objekter og lagre dem i et ObjectPool // for bruk i animasjonsobjektetPool = new ObjectPool (circleShape, 10); 

Trinn 7: Opprette objekter ved hjelp av ObjectPool.request ();

Nå har vi våre kjerne spillere oppsett, clipContainer, de BitmapCanvas og ObjectPool Med sine 10 klipp, er det på tide å begynne å få ting til å bevege seg.

For å få et element fra ObjectPool Vi kan bruke objectPool.request (); som vil gi oss en circleShape MovieClip fra Flash-biblioteket for å jobbe med.

De ObjectPool gir oss også objectPool.onRequestObject () Metode som er en praktisk måte å tildele egenskaper til et klipp hver gang vi ber om en. Legg til følgende nedenfor hvor du instantiated the ObjectPool:

 // lage en samling av 10 objekter og lagre dem i et ObjectPool // for bruk i animasjonsobjektetPool = new ObjectPool (circleShape, 10); // hver gang vi ber om en ny form fra bassenget // det vil utføre følgende objektPool.onRequestObject = funksjon (klipp: MovieClip): void clip.x = Math.random () * stage.stageWidth; clip.y = Math.random () * scene.stageHeight; clipContainer.addChild (klipp); 

Trinn 8: Se resultatet

Med den nye koden lagt til, hver gang vi ber om et objekt fra bassenget ved å bruke objectPool.request () det vil skape en circleShape. Legg det til i clipContainer og plasser det tilfeldig på skjermen. Du kan teste dette ved å endre konstruktøren slik at den ser ut som følgende:

 / ** * konstruktør * / offentlig funksjon Hoved () // angir Hype-rammen initHype (); objectPool.request (); 

Hvis alt gikk bra, bør du ha en enkelt, ensom sirkel på skjermen.


Trinn 9: Be om alle objekter på en gang

Husker du at vi satte ObjectPool størrelse til 10? Vel, vi skal opp på ante og øke dette til 100 objekter ved å endre følgende:

 // lage en samling av 10 objekter og lagre dem i et ObjectPool // for bruk i animasjonsobjektetPool = nytt ObjectPool (sirkelSkape, 100);

Vi kan endre den tidligere forespørselen om å lese som requestAll () som dette:

 / ** * konstruktør * / offentlig funksjon Hoved () // angir Hype-rammen initHype (); objectPool.requestAll (); 

Nå skal vi ha 100 sirkler spredt over skjermens område.


Trinn 10: Legge til faste vibrasjoner

Nå har vi vår 100 circleShapes fordelt rundt skjermen, det er på tide å gjøre vårt design til liv ved å legge til bevegelse.

La oss begynne med å bruke en FixedVibration til alfa og skala egenskapene til hvert klipp. Vi kan bruke ObjectPools onRequestObject metode for å implementere det som vist:

 // lage en samling av 10 objekter og lagre dem i et ObjectPool // for bruk i animasjonsobjektetPool = nytt ObjectPool (sirkelSkape, 100); // hver gang vi ber om en ny form fra bassenget // det vil utføre følgende objektPool.onRequestObject = funksjon (klipp: MovieClip): void clip.x = Math.random () * stage.stageWidth; clip.y = Math.random () * scene.stageHeight; // legg til en fast vibrasjon til alfa- og skalaegenskapene til hver sirkelSkjema ved forespørsel var alphaVib: FixedVibration = new FixedVibration (klipp, "alpha", 0.9, 0.05, 0.5, 1.5, false); var scaleVib: FixedVibration = new FixedVibration (klipp, "skala", 0,9, 0,05, 0,05, 0,8, falsk); alphaVib.start (); scaleVib.start (); clipContainer.addChild (klipp); 

La oss se nærmere på FixedVibration objekter vi opprettet. Hver FixedVibration objekt vi lager tar 7 parametere, henholdsvis de er som følger:

  • Hensikten med å bruke FixedVibration til, i vårt tilfelle vår circleShape kalt "klipp".
  • Eiendommen å søke på FixedVibration til denne gangen jobber vi med alfa og skala eiendommer.
  • Den tredje parameteren er Vår av FixedVibration, Jo høyere tallet jo mer "fjærende" bevegelsen. En verdi mellom 0 og 1 fungerer best.
  • Neste opp er Letthet av vibrasjonen, jo lavere verdien jo raskere vil den glide mellom følgende to verdier. En verdi mellom 0 og 1 fungerer best.
  • Minimumsverdien er oppe neste, dette vil være det laveste som vibrasjonen vil treffe.
  • På samme måte vil maksimumverdien være den maksimale verdien vibrasjonen vil treffe.
  • Endelig er den siste parameteren relativ, standard dette til falsk.

Så hvordan passer alle disse sammen? La oss se på hvordan skala eiendom er påvirket av FixedVibration. Det er gitt min og Max verdier på 0,05 og 0,8, den Vår verdien er ganske høy på 0,9 og Letthet er ganske lav på 0,05, noe som gjør at den skaleres uregelmessig og raskt.

Ha en lek med disse verdiene for å få en følelse av hvordan de påvirker bevegelsen.

Når vi tester vår Flash-fil, bør vi få noe slikt:


Trinn 11: Legge til en variabel vibrasjon

Svært lik den FixedVibration, de VariableVibration vil justere en egenskap av et objekt med en verdi som svinger. Forskjellen er at VariableVibration er ikke lineær som navnet antyder.

Endre koden som følger for å plassere klippene til midten av Scene, bare denne gangen vil vi søke på en VariableVibration til x og y verdier for å begynne å se litt bevegelse!

 // hver gang vi ber om en ny form fra bassenget // det vil utføre følgende objektPool.onRequestObject = funksjon (klipp: MovieClip): void clip.x = stage.stageWidth / 2; clip.y = scene.stageHeight / 2; // legg til en VariabelVibrasjon for x / y bevegelsen i hver sirkelSkjema var xVib: VariabelVibrasjon = Ny VariabelVibrasjon (klipp, "x", 0.97, 0.03, 40); var yVib: VariabelVibrasjon = ny VariabelVibrasjon (klipp, "y", 0,97, 0,03, 40); xVib.start (); yVib.start (); // legg til en fast vibrasjon til alfa- og skalaegenskapene til hver sirkelSkjema ved forespørsel var alphaVib: FixedVibration = new FixedVibration (klipp, "alpha", 0.9, 0.05, 0.5, 1.5, false); var scaleVib: FixedVibration = new FixedVibration (klipp, "skala", 0,9, 0,05, 0,05, 0,8, falsk); alphaVib.start (); scaleVib.start (); clipContainer.addChild (klipp); 

La oss se nærmere på VariableVibration objekter vi opprettet. Hver VariableVibration objektet vi lager, tar bare 5 parametere, henholdsvis de er som følger:

  • Hensikten med å bruke VariableVibration til, i vårt tilfelle vår circleShape kalt "klipp".
  • Eiendommen å søke på VariableVibration til denne gangen jobber vi med x- og y-egenskapene.
  • Den tredje parameteren er Vår av vibrasjonen.
  • Neste opp er Letthet av vibrasjonen.
  • Den endelige parameteren er Område av verdier som er produsert. Jo høyere tallet jo mer uberegnelig effekten.

Vår Flash-fil skal se slik ut når den publiseres:


Trinn 12: Legge til litt wow

Det begynner å se bra ut, men vi kan gjøre mye bedre! Husk at bitmapCanvas.startCapture () linje jeg ba deg om å holde ukjent vei tilbake i trinn 6? Gå videre og ikke kommentere det, og test deretter filmen på nytt.

Dette er mer som det!


Trinn 13: Et raskt triks for rotasjon

Et veldig enkelt triks for å legge til en spiralbevegelse er å legge til en annen vibrasjon til klippets rotasjonsegenskap slik som:

 // hver gang vi ber om en ny form fra bassenget // det vil utføre følgende objektPool.onRequestObject = funksjon (klipp: MovieClip): void clip.x = stage.stageWidth / 2; clip.y = scene.stageHeight / 2; // legg til en VariabelVibrasjon for x / y bevegelsen i hver sirkelSkjema var xVib: VariabelVibrasjon = Ny VariabelVibrasjon (klipp, "x", 0.97, 0.03, 40); var yVib: VariabelVibrasjon = ny VariabelVibrasjon (klipp, "y", 0,97, 0,03, 40); xVib.start (); yVib.start (); // legg til en fast vibrasjon til alfa- og skalaegenskapene til hver sirkelSkjema ved forespørsel var alphaVib: FixedVibration = new FixedVibration (klipp, "alpha", 0.9, 0.05, 0.5, 1.5, false); var scaleVib: FixedVibration = new FixedVibration (klipp, "skala", 0,9, 0,05, 0,05, 0,8, falsk); alphaVib.start (); scaleVib.start (); // legg til en fast vibrasjon til sirkelens rotasjonSkape varrotasjonVib: FastVibrering = ny FastVibrering (klipp, "rotasjon", 0,9, 0,05, 0, 360, falsk); rotationVib.start (); clipContainer.addChild (klipp); 

Trinn 14: Et raskt triks for rotasjon

Før du tester, hopper du over til Flash og åpner circleShape MovieClip i biblioteket.

Som vist, dra sirkelen like langt fra midten i hvilken som helst retning. Jo lenger du beveger det fra sentrum, jo ​​mer spiraler vil dukke opp i designet når du publiserer:


Trinn 15: ExitShapes

Et problem med vår nåværende animasjon er at når klippene beveger seg fra skjermen, kommer de sjelden tilbake. Vi kan løse dette lille problemet ved å lage en ExitShapeTrigger.

en ExitShapeTrigger er et område som anses som trygt for klippet. Når klippet går ut av dette området, må vi utføre en slags funksjon, for eksempel å be om et nytt klipp fra ObjectPool.

Vi definerer en ExitShapeTrigger som Nedenfor:

 // hver gang vi ber om en ny form fra bassenget // det vil utføre følgende objektPool.onRequestObject = funksjon (klipp: MovieClip): void clip.x = stage.stageWidth / 2; clip.y = scene.stageHeight / 2; // legg til en VariabelVibrasjon for x / y bevegelsen i hver sirkelSkjema var xVib: VariabelVibrasjon = Ny VariabelVibrasjon (klipp, "x", 0.97, 0.03, 40); var yVib: VariabelVibrasjon = ny VariabelVibrasjon (klipp, "y", 0,97, 0,03, 40); xVib.start (); yVib.start (); // legg til en fast vibrasjon til alfa- og skalaegenskapene til hver sirkelSkjema ved forespørsel var alphaVib: FixedVibration = new FixedVibration (klipp, "alpha", 0.9, 0.05, 0.5, 1.5, false); var scaleVib: FixedVibration = new FixedVibration (klipp, "skala", 0,9, 0,05, 0,05, 0,8, falsk); alphaVib.start (); scaleVib.start (); // legg til en fast vibrasjon til sirkelens rotasjonSkape varrotasjonVib: FastVibrering = ny FastVibrering (klipp, "rotasjon", 0,9, 0,05, 0, 360, falsk); rotationVib.start (); // definere en ExitShape var exit: ExitShapeTrigger = ny ExitShapeTrigger (onExitShape, clip, exitShape, true); exit.start (); clipContainer.addChild (klipp);  // gjenbruke objekter privat funksjon onExitShape (klipp: MovieClip): void trace ("circleShape left the screen!"); 

Dette vil skape en ExitShapeTrigger med følgende parametere:

  • Metoden for å utløse når hendelsen har skjedd.
  • De Filmklipp for å teste om det er ute av det angitte området.
  • De Filmklipp brukes til å definere det trygge området, har du kanskje allerede lagt merke til at vi allerede har opprettet dette, kalt det exitShape og plasserte den på Scene i Flash.
  • Den siste parameteren er Skriv inn en gang flagg, bare sett dette til ekte for nå.

Trinn 16: ObjectPool Release

Etterpå fra ExitShape Vi introduserte i det siste trinnet, vi skal ganske enkelt redigere onExitShape metode slik at når et klipp flytter seg fra skjermen, sletter vi det og ber om en ny fra ObjectPool.

Hittil har vi jobbet med be om() og requestAll () metoder for ObjectPool, når vi vil slette den gamle bruker vi frigivelse (clip) metode:

 // resirkulere objekter privat funksjon onExitShape (klipp: MovieClip): void // fjern fra ObjectPool og clipContainer objectPool.release (clip); clipContainer.removeChild (klipp); // få et nytt klipp fra ObjectPool objectPool.request (); 

Trinn 17: Legge til en uskarphet

HYPE har muligheten til veldig enkelt å legge til filtre som uskarphet og glød til objekter. For å legge til en touch mer pizzazz til designet skal vi legge til en BlurFilter til prosjektet ved hjelp av FilterCanvasRhythm:

 // tenk på BitmapCanvas som et tomrom vi vil 'male' // hver ramme med nye bilde data bitmapCanvas = nytt BitmapCanvas (stage.stageWidth, stage.stageHeight); bitmapCanvas.startCapture (clipContainer, true); addChild (bitmapCanvas); // legge til et uskarphet er uskarphet: FilterCanvasRhythm = new FilterCanvasRhythm ([new BlurFilter (1.1, 1.1, 1)], bitmapCanvas); blur.start (TimeType.TIME, 100); // lage en samling objekter og lagre dem i et ObjectPool // for bruk i animasjonsobjektetPool = nytt ObjectPool (sirkelSkape, 100);

Ovennevnte kode lager en FilterCanvasRhythm som tar et filter som en parameter og bruker den til bitmapCanvas vi erklærte tidligere.

Test prosjektet, det begynner virkelig å komme sammen nå!


Trinn 18: Legge til litt mangfold

Vi kan lett legge til litt dybde i sammensetningen ved å legge til flere former i blandingen. Snarere enn å måtte opprette og administrere flere ObjectPools, Vi kan legge til rammer til den opprinnelige sirkelenSkape vi brukte og tilfeldigvis velge hvilken ramme som skal spilles.

Prøv dette nå, rediger circleShape objekt i Flash-biblioteket. Opprett en ny Keyframe, velg en ny farge og tegne en ny form. Gå videre og lag noen få Keyframes, i neste trinn ser vi på å implementere dem med kode. Dette er vår nye form:

? sammenlignet med vår gamle form:


Trinn 19: Velge tilfeldige rammer for circleShape

Med vår sirkelSkap som nå sporter noen få nye Keyframes kan vi bare sette inn denne enkle koden for å velge en ramme som skal brukes hver gang vi ringer objectPool.request ():

 // hver gang vi ber om en ny form fra bassenget // det vil utføre følgende objektPool.onRequestObject = funksjon (klipp: MovieClip): void clip.x = stage.stageWidth / 2; clip.y = scene.stageHeight / 2; // velg et tilfeldig ramme clip.gotoAndStop (Math.ceil (Math.random () * 3)); // legg til en VariabelVibrasjon for x / y bevegelsen i hver sirkelSkjema var xVib: VariabelVibrasjon = Ny VariabelVibrasjon (klipp, "x", 0.97, 0.03, 40); var yVib: VariabelVibrasjon = ny VariabelVibrasjon (klipp, "y", 0,97, 0,03, 40); xVib.start (); yVib.start (); // legg til en fast vibrasjon til alfa- og skalaegenskapene til hver sirkelSkjema ved forespørsel var alphaVib: FixedVibration = new FixedVibration (klipp, "alpha", 0.9, 0.05, 0.5, 1.5, false); var scaleVib: FixedVibration = new FixedVibration (klipp, "skala", 0,9, 0,05, 0,05, 0,8, falsk); alphaVib.start (); scaleVib.start (); // legg til en fast vibrasjon til sirkelens rotasjonSkape varrotasjonVib: FastVibrering = ny FastVibrering (klipp, "rotasjon", 0,9, 0,05, 0, 360, falsk); rotationVib.start (); // definere en ExitShape var exit: ExitShapeTrigger = ny ExitShapeTrigger (onExitShape, clip, exitShape, true); exit.start (); clipContainer.addChild (klipp); 

Som et raskt notat vil den tilfeldige rammekoden ovenfor skifte mellom rammer 1, 2 og 3. Du må kanskje justere dette til antall rammer i din circleShape.


Trinn 20: Fullfør

Det er på tide å teste filmen og baske i blandingen av funky mønstre og farger ettersom HYPE-rammen tar koden din og blander den til et stykke generativ kunst.

Heres den endelige koden for referanse:

 pakke import hype.extended.behavior.FixedVibration; importer flash.display.Sprite; importer flash.display.MovieClip; importer flash.filters.BlurFilter; importere hype.extended.behavior.VariableVibration; importere hype.extended.rhythm.FilterCanvasRhythm; importer hype.extended.trigger.ExitShapeTrigger; importere hype.framework.core.ObjectPool; importere hype.framework.core.TimeType; importer hype.framework.display.BitmapCanvas; / ** * En veiledning for å introdusere HYPE. Et visuelt rammeverk * ​​av Branden Hall og Joshua David for å skape * generativ / iterativ design med kode. * * @author Anton Mills * @version 06/02/2011 * / offentlig klasse Main utvider MovieClip // private properties private var bitmapCanvas: BitmapCanvas; privat var clipContainer: Sprite; private var objectPool: ObjectPool; / ** * konstruktør * / offentlig funksjon Hoved () // angir Hype-rammen initHype (); // start sekvens objektPool.requestAll ();  / ** * igangsetting av Hype-medlemmene vi skal bruke og konfigurasjon tidligere * for å kjøre animasjonen * / privat funksjon initHype (): void // klippet Container brukes som forelder for alle våre sprites clipContainer = new Sprite (); addChild (clipContainer); // tenk på BitmapCanvas som et tomrom vi vil 'male' // hver ramme med nye bilde data bitmapCanvas = nytt BitmapCanvas (stage.stageWidth, stage.stageHeight); bitmapCanvas.startCapture (clipContainer, true); addChild (bitmapCanvas); // legge til et uskarphet er uskarphet: FilterCanvasRhythm = new FilterCanvasRhythm ([new BlurFilter (1.1, 1.1, 1)], bitmapCanvas); blur.start (TimeType.TIME, 100); // lage en samling objekter og lagre dem i et ObjectPool // for bruk i animasjonsobjektetPool = nytt ObjectPool (sirkelSkape, 100); // hver gang vi ber om en ny form fra bassenget // det vil utføre følgende objektPool.onRequestObject = funksjon (klipp: MovieClip): void clip.x = stage.stageWidth / 2; clip.y = scene.stageHeight / 2; // velg et tilfeldig ramme clip.gotoAndStop (Math.ceil (Math.random () * 3)); // legg til en VariabelVibrasjon for x / y bevegelsen i hver sirkelSkjema var xVib: VariabelVibrasjon = Ny VariabelVibrasjon (klipp, "x", 0.97, 0.03, 40); var yVib: VariabelVibrasjon = ny VariabelVibrasjon (klipp, "y", 0,97, 0,03, 40); xVib.start (); yVib.start (); // legg til en fast vibrasjon til alfa- og skalaegenskapene til hver sirkelSkjema ved forespørsel var alphaVib: FixedVibration = new FixedVibration (klipp, "alpha", 0.9, 0.05, 0.5, 1.5, false); var scaleVib: FixedVibration = new FixedVibration (klipp, "skala", 0,9, 0,05, 0,05, 0,8, falsk); alphaVib.start (); scaleVib.start (); // legg til en fast vibrasjon til sirkelens rotasjonSkape varrotasjonVib: FastVibrering = ny FastVibrering (klipp, "rotasjon", 0,9, 0,05, 0, 360, falsk); rotationVib.start (); // definere en ExitShape var exit: ExitShapeTrigger = ny ExitShapeTrigger (onExitShape, clip, exitShape, true); exit.start (); clipContainer.addChild (klipp); ;  // gjenbruke objekter privat funksjon onExitShape (klipp: MovieClip): void objectPool.release (clip); clipContainer.removeChild (klipp); objectPool.request (); 

Konklusjon

Dette handler bare om å innføre HYPE-rammeverket, takk veldig mye for din tid. Jeg håper du likte det og husker at vi bare riper overflaten på noen av de fantastiske effektene som kan gjøres med rammen. Vennligst sjekk HYPE-rammeverkets hjemmeside på www.hypeframework.org for noen fantastiske eksempler på rammen og hvordan andre har tatt det til neste nivå med Away3D / Papervision integrasjon!


Flere HYPE-ressurser på Activetuts+

  • Kode en kaotisk komposisjon inspirert av Joshua Davis av Bruno Crociquia
  • Introduksjon til HYPE ActionScript 3.0 Framework av Tom Green
  • Hurtig Tips: Slik eksporterer du Flash til PNG med HYPE av Daniel Apt
  • Lag en Mesmeric Music Visualizer med HYPE av Franci Zidar