Starling partikkel effekter for Stage3D Shooter spill
to
Del
15
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter skytespillet Up.Quick. Tips: Legg et uskarpt Trail Effect til din BulletsBuild en Stage3D skytespillet Up: Eksplosjoner, Parallax, og Kollisjoner
Jeg er sikker på at Stage3D er ikke fremmed for de fleste lesere; det er den nye API som gir AS3 programmerere tilgang til GPU. Men koding mot opcodes i Stage3D kan ikke være alles foretrukne valget, så det er heldig at det er en snarvei: Starling, bibliotek utviklet for å kapsle dette lave nivået programmering å gjøre det mye enklere. Og sammen med Starling kommer dens partikkel effekter forlengelse. I denne opplæringen, vil vi sjekke ut partikkel-systemer i dette rammeverket, og se sine programmer brukes på en shoot-'em-up spill
Trinn 1:. Basic Oppsett
Hopp over dette trinnet hvis du har jobbet med FlashDevelop en stund. For nybegynnere, her er hvordan du installerer et bibliotek pakke - i dette tilfellet Starling og partikkel forlengelse. Merk at disse to elementene ikke kommer i en pakke, så vi må laste dem separat.
Først laste ned Starling rammeverk og partikkel forlengelse fra depotene. Pakk etter vellykket nedlasting. Skanne den første utpakkede katalog for src mappen og lim Starling rammeverket bibliotek, markert på bildet under, inn i prosjektet kildemappen.
skanne andre mappen for partikkel forlengelse og kombinere dem sammen. Du kan trekke den markerte mappen nedenfor i Starling-mappen. Bildet nedenfor er det sluttresultatet du bør ankomme
For mer info om FlashDevelop og bruk av eksterne biblioteker, se disse tutorials.
Hvordan bruke en ekstern Biblioteket i flash Prosjekter
Trinn 2: Hovedklasser
Hvis du ikke har blitt introdusert til Starling og partikkel forlengelse allerede, jeg oppfordrer sterkt et besøk til Lee Brimelow sin video tutorials på Starling og partikkeleffekter, og Matthew Chung tutorial om håndtering animasjon stater med Starling.
Vi skal bare bris gjennom det grunnleggende i to trinn her. Hvis du allerede er kjent med Starling og partikkel forlengelse, gjerne hoppe til trinn 4.
Du kan se fra det andre bildet av forrige trinn (nedre del) at to klasser blir opprettet: Main.as og Testing.as. Den første fungerer som en bærerakett for sistnevnte. Så, de fleste av våre Starling kode bor i Testing.as. Jeg har understreket den viktige koden i Main.as her:
privat funksjon init (e: Hendelses = null): void {removeEventListener (Event.ADDED_TO_STAGE, init); //Inngangspunkt Var myStarling: Starling = new Starling (Testing, scene); myStarling.simulateMultitouch = true; myStarling.start (); //initiere Starling på scenen //tillate mus /røre hendelser skal skje i Starling //vri nøkkelen og starte motoren}
... og Testing.as skal se slik ut:
public class Testing strekker Sprite {offentlig funksjon Testing () {addEventListener (Event.ADDED_TO_STAGE, init); } Private funksjon init (e: Hendelses): void {removeEventListener (Event.ADDED_TO_STAGE, init); //Koden går her. stage.color = 0; //slå scenen farge til svart //Tegn opp en liten quad på scenen, //bare for å sørge for at alt er på plass //Legg merke til den øverste venstre hjørne av sprite er justert til midten av scenen Var q: Quad = new Quad (30, 30); addChild (q); q.color = 0xEEEEEE; q.x = stage.stageWidth > > 1; q.y = stage.stageHeight > > 1; }}
Og hvis alt er satt opp riktig, bør du komme frem til resultatet som vist nedenfor. Ikke mye, bare en sprite på scenen
Merk:. Testing.as utvider Sprite fra Starling.display.Sprite, ikke flash.display.Sprite. Klassene har samme navn, men er ikke det samme
Trinn 3:. Partikkel Extension i Starling
Partikkel forlengelse av Starling inneholder tre viktige klasser. Deres funksjonalitet er oppført nedenfor
Navn ClassFunctionalityParticle.asA enkelt partikkel med unike attributes.ParticleSystem.asControls flyten av partikler:. Generasjonen, animasjon og recycling.ParticleDesignerPS.asAn forlengelse av ParticleSystem.as for enkel manipulering av partikkel system.
Vi skal opprette en forekomst av ParticleDesignerPS.as. Dette krever inntasting følgende argumenter inn i klassen konstruktør:
en XML-fil som inneholder all initiering verdi for partikkelegenskaper (ganske mange av dem)
en image å prøve for alle partikler
Ingen fare, onebyonedesign.com vil hjelpe deg med dette. Besøk deres partikkel designer siden og finpusse alle disse innvielses verdier til hjertet ditt innhold. Deretter eksportere alle data til ZIP-format. Denne ZIP-filen inneholder XML-filen, og bildet for partikkel effekten du bare laget gjennom deres nettside!
Pakk og dra alle disse inn i kildemappen i FlashDevelop. Se de markerte elementene i bildet nedenfor.
Generer import uttalelser å få disse to elementene i din Testing klasse. Du må også skrive om init-metoden i Testing. De er alle under
[Bygg (kilde = "particle.pex", mimetype = "application /octet-stream")] private Var InitValues. Class [Bygg (kilde = "texture.png")] private Var Sample : Classprivate funksjonen init (e: Hendelses): void {removeEventListener (Event.ADDED_TO_STAGE, init); //Koden går her. stage.color = 0; //slå scenen farge til svart Var flow1: ParticleDesignerPS = nye ParticleDesignerPS (XML (nye InitValues ()), Texture.fromBitmap (ny prøve ())); addChild (flow1); flow1.emitterX = stage.stageWidth > > 1; flow1.emitterY = stage.stageHeight > > 1; flow1.start (); Starling.juggler.add (flow1);}
Her er resultatet bør du ankommer. Ganske enkel, rett
Trinn 4: Forstå Particle System
Vårt neste skritt er å muliggjøre samhandling med partikkel system (det lille brann) på runtime. Vi vil bruke musen til å styre egenskapene til brann. Men før vi gjør det, vil jeg gjerne sidesteg litt å orientere deg på konseptet med partikkelsystemer.
Partikler er bare sprites som blir sendt fra et koordinatsystem. Etter fødselen, vil de animere i et bestemt mønster. Dette mønsteret kan være unik for hver partikkel eller felles for alle partikler. Men trygg, deres fysiske egenskaper vil endre seg over tid. For eksempel:
Avstand fra fødselen koordinere
Retning og hastighet
Farge og alpha nivå
Størrelse
Også, deres liv på scenen bestemmes ved fødselen. Hvis hver partikkel er lov til å leve evig på scenen, vil vi ha overbefolkning og programmet ytelse vil lide på grunn av å ha en masse grafiske eiendeler for å håndtere. På et tidspunkt, dør partikkelen, men det blir ikke skuffes av scenen. Det er resirkulert i stedet, ved å bli flyttet til en fødsel koordinere og innta rollen som en ny partikkel. Det er en ny partikkel fordi et nytt sett med egenskaper vil bli definert for det da før sine animasjons spark i og en annen syklusen fortsetter.
(Dette er objekt pooling Ok, så hvordan forholder dette seg til våre brann? Vel, vi kan bruke lettelser funksjoner for å animere egenskaper av denne brannen over tid. Innenfor Starling rammeverket er ParticleDesignerPS plassert på slutten av dette hierarkiet: ParticleDesignerPS > ParticleSystem > Displayobject > EventDispatcher > Object For å finne en balanse, vi vil bare spore arvet egenskaper fra ParticleSystem. La oss ta en titt på disse neste trinn ... Nedenfor er de egenskapene ParticleSystem blendFactorSource, blendFactorDestination De av ParticleDesignerPS er ordnet i neste tabell. De fleste av disse egenskapene kan finjusteres ved starten og slutten tilstand. For eksempel vil alle genererte partikler starte med en størrelse på 1,0 og avsluttes ved 0,1. Imidlertid vil partikkelstrømmen være kjedelig hvis alle partikler er initiert og avsluttet ved slike lignende tilstander, så ParticleDesignerPS bestemmelser for variansen av den opprinnelige verdien, og noen ganger variansen ved opphør verdi også. Siterer deres eksempel, hvis vi gi et avvik på 0,2 på partikkel opprinnelige størrelse, vil påfølgende partikler birthed eller resirkuleres inn i systemet starte sin størrelse et sted mellom 0,8 ~ 1,2 og slutten på 0,1. Det finnes to typer av partikkelstrømmen leveres for i ParticleDesignerPS: tyngdekraften og radial. Vist i tabellen ovenfor er egenskaper du kan justere hvis du bruker tyngdekraften flyt. For gravitasjon, fødsel koordinere av partikler ligger på emitterX og emitterY. For radial, fødsel koordinere for partikler ligger noen poeng unna emitterX og emitterY, og de beveger seg mot Vel, takk for imøtekommende at liten omvei. Nå for noen Actionscript. I init-metoden, vil vi legge til en lytter på scenen for touch hendelser Og lytteren som nedenfor For å utføre animasjonen, er et eksempel Tween definert. Dens manipulasjon er lik som populære Tween motorer på mange måter. Så legger vi det til gjøgleren av gjeldende forekomsten av Starling. Dette sjonglør objektet vil bidra til å gradvis oppdatere Tween forekomsten over tid. Resultatet er nedenfor. Klikk og dra musen rundt på scenen La oss sette opp våre skip nå og sette en løype på den. Eiendelene er fra opengameart.org og jeg har tatt dem i nedlastingspakken. Sjekk at området ut for andre gratis spill kunst. Vi vil starte på nytt med en annen klasse, TestingShip.as. Først importerer romskipet image "boss1.png" product: [Bygg (kilde = "boss1.png")] privat Var Ship. Class ... etterfulgt av et lite oppsett for å initialisere det i init-metoden : Oppdater sin posisjon og orientering i henhold til loc (plassering) og lof (fri sikt) Igjen, klikke og dra i scenen for å se effekten: Ok , er eksos av skipet på toppen av selve skipet, og romskipet ikke reagerer på muse hendelsen. Vi skal fikse det nå. Bare oppveie emitterX og emitterY av partikkel flyte litt avstand av fra romskipet og oppdatering romskip rotasjon ved hjelp lof. (Merk at lof er oppdatert på mus hendelser. Du vil se manuset neste trinn.) La oss prøve å programmere skipet navigasjon nå, ved å sende en mus hendelse. Jeg har bare kommentert de viktige linjene: Og her er et show av sluttresultatet. Dra musen rundt på scenen og romskipet vil dra dit La oss finjustere vår eksos. Når skipet beveger seg, vil eksosen definitivt være blåser hardere, til høyre? Vi kan gå opp emissionRate og hastighet når du flytter skipet, og trappe ned emissionRate når den er stoppet. Her er tilfelle, fremhevet: Og her er de funksjonskall på de . hendelser Klikk og dra igjen, og ta hensyn til lengden på eksos Partikler kan også uttrykke hvor fort skipet beveger seg i forhold til sine omgivelser. Sjekk ut resultatet nedenfor. Klikk og dra deg musen rundt. Observere hvor raskt de omkringliggende partikler beveger seg. De øker som du samhandler med skipet, og bremser ned når du stopper samspillet. De har også orientere sin rotasjon tilsvarende. Konfigurering av denne effekten er relativt lett på app vist frem av onebyonedesign.com initiering av partiklene følger et lignende format til det foregående eksempel. Du kan velge å finpusse effekt med app fra onebyonedesign.com Hotell og import inn i scenen. Jeg bare kode rett inn i Actionscript for enkel Vi må også sette partikkel emitter litt avstand foran skipet Og oppdatere denne vektoren under kjøring Du skjønner, emitterXVariance og emitterYVariance håndtere aksene separat. Dette betyr at hvis vi roter romskipet, trenger vi noen midler for å bestemme lengden på spredning langs disse to aksene. Nå sjekke ut vektor for siktelinjen. Det er alltid vinkelrett på den for spredning linje (den tynne mørk linje). Vi kan skalere opp denne vektoren tilsvarende og Swizzle sin x og y med de av emitter er variansen på startpunktet. Sjekk demo nedenfor. Klikk og dra musen rundt. Du vil se partikkelstrømmen mer livaktige. Til slutt, skalere omfanget av spredt opp og sette den litt lenger i forkant av skipet slik at spillerne ikke vil se sine utslippspunktet. Til slutt som skipet er akselererende, la oss øke omfanget av gravityX og gravityY, pluss eksos, tilsvar Som du avanserer i spillet, vil du definitivt ta hits og påføres skade. Som skade blir alvorlig, vil du skipet brenne opp. En slik effekt kan genereres her; vi kan gjøre bruk av emissionXVariance og emissionYVariance å definere området brenne. Jeg har uthevet dem i koden under Skade alvorlighetsgraden er angitt med området og intensiteten av brannskader. Øke og redusere emissionRate å simulere dette. Jeg har lagt til kontroller på tastaturet "A" og "S" for å etterligne dette. Merk at hvis du øke levetiden av partikler, synes brannen å brenne mer intenst. Vel, det tar tid å interpolere partikler fra sin opprinnelige størrelse til å ende størrelse, så hvis du øke levetiden, er det lengre tid å gå over fra den større start til minste enden størrelse. Som flere store partikler bo på samme sted lenger, blander de sammen for å gi inntrykk av en mer intens brann Trykk på "A" -tasten å se brannen brenne mer intenst og "S" -tasten til litt slukke den. Eksos farge har vært endring, for å skille den fra den brenn: Alle gode spill må slutte på et tidspunkt. Uavhengig av hvem som blir eliminert, bør en god eksplosjon for en finish ikke bli savnet. Så hva med en kjernefysisk soppsky? Klikk på demoen nedenfor for å se en Nå, la oss kode det Denne partikkelstrømmen er litt annerledes enn de vi har sett. Tidligere har vi brukt partikkelstrømmen typen 0 (tyngdekraften), og dette er type 1 (radial). Partiklene er faktisk beveger seg til midten på en konstant hastighet. Jeg snudde utslipp vinkel variansen til sitt høyeste, slik at du kan se alle de genererte partikler danner en sirkel. Så, ved å animere maksimal radius og minimum radius disse partiklene skal leve i over tid, ved hjelp av en Tween, vi oppnå dette resultatet. Her er koden for å utføre animasjonen Så dette har vært en lang tutorial. La oss gjøre en liten oppsummering her. Vi har gått gjennom: Vi har dekket ganske mye her. Men en viktig aspekt Jeg har ikke gått gjennom er å strekke seg fra ParticleSystem. Dette vil virkelig gi deg muligheten til å kode dine egne partikkel stier i stedet for å stole på ParticleDesignerPS. Jeg må utsette dette til en annen tutorial. Takk for lesing og se deg i neste opplæringen. Må legge igjen kommentarer på feil og denne partikkelen motorens bruk i prosjektet ditt hvis du velger å vedta det. Anmeldelser
, og du kan se hvordan du bruke den til din egen ikke-Starling Flash prosjekter her.)
Trinn 5: Egenskaper av ParticleSystem og ParticleDesignerPS
PropertyDescriptioncapacityMaximum partikler kan systemet. bære når som helst. Øker i trinn på 500 når antallet partikler overskrider dagens kapasitet. Skrive only.numParticlesNumber av partikler i systemet på et gitt tidspunkt. Skrive only.emissionRateNumber av partikler generert fra fødselen koordinere hver second.emitterX, emitterYControl punkt for beholderen der alle partikler leve.
Context3DBlendFactor definisjon for kilde og destinasjon. Destinasjon refererer til pixel farge fra siste gjengi og Kilden refererer til ny pixel farge for å tegne på destination.textureCurrent bilde samplet som tekstur av partikler. Beskyttet.
PropertyDescriptionemitterXVariance, emitterYVarianceVariation av fødselen coordinate.startSize, startSizeVarianceInitial størrelse og varianceendSize , endSizeVarianceTermination størrelse og varianceemitAngle, emitAngleVarianceParticle opprinnelige retning og variancespeed, speedVarianceParticle innledende hastighet og variancegravityXAcceleration langs x-aksen på alle partikler 'første velocitygravityYAcceleration langs y-aksen på alle partikler' første velocitytangentialAcceleration, tangentialAccelerationVariationRate av rotasjon på partikkelens hastighet, og varians
det. Tabellen nedenfor viser egenskapene for radial flyt.
PropertyDescriptionmaxRadius, maxRadiusVarianceMaximum radius fra sentrum, og varianceminRadiusMinimum radius fra centerrotationPerSecond, rotationPerSecondVarianceRate av rotasjon på partikkel velocitystartColor, startColorVarianceInitial farge og varianceendColor, endColorVarianceTermination farge og varians
Trinn 6 : Legge Interaktivitet
stage.addEventListener (TouchEvent.TOUCH, spor);
privat funksjon spor (e. TouchEvent. ): void {var touch: Touch = e.getTouch (scene); //kartlegging på scenen er rutenettet //når brukeren trykker mus og beveger if (touch.phase == TouchPhase.MOVED) {//beregne vinkelen å peke partikkelstrømmen til Var distX: Number = touch.globalX - flow1.emitterX; Var distY: Number = touch.globalY - flow1.emitterY; Var vinkel: Number = Math.atan2 (distY, distX); t = new Tween (flow1, 1,5, Transitions.EASE_OUT_BACK); t.animate ("emitAngle", vinkel); Starling.juggler.add (t); }}
Trinn 7:. Sette opp Ship
//setup det grafiske appearancevar shipBMP: Bitmap = new Ship () som Bitmap; //import aktiva til en bmpvar shipTEX: Texture = Texture.fromBitmap (shipBMP); //prøven bmp som tekstur til imagevar shipIMG: Bilde = new Image (shipTEX); //bilde laget med tekstur //setup skipets orientering & positionshipIMG.rotation - = Math.PI * 0,5; //reorientere imageshipIMG.x - = shipIMG.width > > 1; //fordi bildets opprinnelse er i øvre venstre hjørne, shipIMG.y + = shipIMG.height > > 1; //vi omplassere imagetheShip = new Sprite (); //og sette det inn i en sprite. Nå registreringspunktet er centered.theShip.addChild (shipIMG); //sprite plassert på stageaddChildAt (theShip, 0); //navigasjons egenskaper shiploc = new Vector2D (stage.stageWidth > > 1, stage.stageHeight > > 1); lof = new Vector2D (0, 10); updateShip ();
privat funksjon updateShip (). void {theShip.x = loc.x; theShip.y = loc.y; theShip.rotation = lof.getAngle ();}
Trinn 8: Sette opp Eksos Trail
privat funksjon updateShip (): void {theShip.x = loc.x; theShip.y = loc.y; theShip.rotation = lof.getAngle (); //oppdatering partikkel trail offset = new Vector2D (60, 0); offset.setAngle (lof.getAngle ()); flow1.emitterX = loc.x - offset.x; flow1.emitterY = loc.y - offset.y;}
Trinn 9: Navigere Ship
privat funksjon spor (e: TouchEvent): void {var kontakt: Touch = e.getTouch (scene); if (touch.phase == TouchPhase.MOVED) {var distX: Number = touch.globalX - flow1.emitterX; Var distY: Number = touch.globalY - flow1.emitterY; vinkel = Math.atan2 (distY, distX); t = new Tween (flow1, 1,5, Transitions.EASE_OUT_BACK); t.animate ("emitAngle", vinkel + Math.PI); t2 = new Tween (theShip, 1,5, Transitions.EASE_OUT); t2.moveTo (touch.globalX, touch.globalY); //flytte skipet t2.onUpdate = oppdatere //påkalle denne funksjonen når tween motoren går Starling.juggler.add (t); Starling.juggler.add (t2); //legger til Juggler}} privat funksjon refresh (): void {loc.x = theShip.x; //refresh plassering loc.y = theShip.y; lof.setAngle (vinkel); //refresh orientering updateShip (); //Oppdatering}
Trinn 10:. Animer Eksos
t2 = new Tween (theShip, 1,5, Transitions.EASE_OUT); t2.moveTo (touch.globalX, touch.globalY); //flytte shipt2.onUpdate = oppdatere //påkalle denne funksjonen når tween motor runst2.onStart = beginState //når skipet begynner movingt2.onComplete = endState //når skipet animasjonen stopper
privat funksjon beginState (): void {flow1.emissionRate = 250 flow1.speed = 100;} private funksjon endState (): void {flow1.emissionRate = 50 flow1.speed = 10;}
Trinn 11:. Parallax Effect
. Men vi trenger å kode noen Actionscript for å endre det under kjøring, og dette vil ta de neste trinnene
Trinn 12:. En Emitter i Front
envr = nye ParticleDesignerPS (XML (nye InitValues ()), Texture.fromBitmap (ny prøve ()));. AddChildAt (envr, 0); envr.blendFactorSource = Context3DBlendFactor.ONEenvr .blendFactorDestination = Context3DBlendFactor.ONEenvr.speed = 10; envr.speedVariance = 20; envr.startSize = 15; envr.startSizeVariance = 0; envr.endSize = 20; envr.endSizeVariance = 20envr.lifespan = 5,0; envr.lifespanVariance = 4,0; envr.emissionRate = 10envr.start (); Starling.juggler.add (envr);
envrLoc = new Vector2D (100, 0);. EnvrLoc.setAngle (vinkel);
//oppdatere environmentenvr.gravityX = -40 * lof.x.; //partikkel akselererer i motsatt directionenvr.gravityY = -40 * lof.y; //av siktlinje vectorenvr.emitterX = loc.x + envrLoc.x; envr.emitterY = loc.y + envrLoc.y;
Trinn 13: The Spread
EnvrLoc = new Vector2D (200, 0); envrLoc.setAngle (vinkel); //oppdatere spreadspread = envrLoc.clone (); spread.scale (0,5); envr.emitterXVariance = spread.y; envr.emitterYVariance = spread.x; < hr>
Trinn 14: Pump Up the Acceleration
if (touch.phase ==. TouchPhase.MOVED) {var distX: Number = touch.globalX - flow1.emitterX; Var distY: Number = touch.globalY - flow1.emitterY; vinkel = Math.atan2 (distY, distX); //animere eksos t = new Tween (flow1, 1,5, Transitions.EASE_OUT_BACK); t.animate ("emitAngle", vinkel + Math.PI); Starling.juggler.add (t); //kontrollere eksos flow1.speed = 350; flow1.endSize = 70; //orientere skipet & parallax vinkel lof.setAngle (vinkel); lof.setMagnitude (10); //justere omfanget av akselerasjon envrLoc.setAngle (vinkel);} if (touch.phase == TouchPhase.ENDED) {//kontrollere eksos flow1.speed = 100; flow1.endSize = 10; lof.setMagnitude (5); //justere omfanget av akselerasjon}
Trinn 15: Ship under angrep
envr = nye ParticleDesignerPS (XML (nye InitValues ()), Texture.fromBitmap (ny prøve ()));. AddChildAt (envr, 2); envr.blendFactorSource = Context3DBlendFactor. ONE_MINUS_SOURCE_ALPHAenvr.blendFactorDestination = Context3DBlendFactor.ONE; envr.emitterXVariance = theShip.width > > 2; envr.emitterYVariance = theShip.height > > 2; envr.emitAngle = 0; envr.emitAngleVariance = Math.PI; envr.speed = 0; envr.startSize = 40; envr.startSizeVariance = 0; envr.endSize = 10; envr.endSizeVariance = 0envr.lifespan = 5,0; envr.lifespanVariance = 3,0; envr.emissionRate = 10; envr.start (); Starling.juggler.add (envr);
privat funksjon controlBurn (e: KeyboardEvent): void {if (e.keyCode == Keyboard.A) {if (envr.emissionRate < 150) envr.emissionRate + = 10; if (envr.lifespan < 8) envr.lifespan + = 0,5; } If (e.keyCode == Keyboard.S) {if (envr.emissionRate > 10) envr.emissionRate - = 10; if (envr.lifespan > 5) envr.lifespan - = 0,5; }}
Trinn 16:. Burning Ship
Trinn 17: Skips Exploded
Trinn 18:.. Radial Particle Flow
Eksplosjon = nye ParticleDesignerPS (XML (nye InitValues ()), Texture.fromBitmap (ny Sample ())); addChild (eksplosjon); explosion.emitterX = stage.stageWidth > > 1; explosion.emitterY = stage.stageHeight > > 1; explosion.emitterType = 1; explosion.emitAngle = 0; explosion.emitAngleVariance = Math.PI; explosion.maxRadius = 10; explosion.maxRadiusVariance = 0; explosion.minRadius = 0;
privat funksjon spor (e: TouchEvent): void {var touch:. Touch = e.getTouch (scene); if (touch.phase == TouchPhase.BEGAN) {explosion.emitterX = touch.globalX; explosion.emitterY = touch.globalY; explosion.start (); t = new Tween (eksplosjon, 1,0, Transitions.EASE_IN); t.animate ("maxRadius", 150); t.animate ("minRadius", 130); t.onStart = fryse t.onComplete = null; Starling.juggler.add (t); }} privat funksjon fryse (): void {stage.removeEventListener (TouchEvent.TOUCH, spor);} private reset funksjon (): void {stage.addEventListener (TouchEvent.TOUCH, spor); explosion.stop (); explosion.maxRadius = 10; explosion.minRadius = 0;}
Trinn 19: Repetisjon
Sette opp Starling og partikkel forlengelse
Egenskaper ved partikkel system
Eksempler på eiendoms manipulasjoner basert på scenario av en skytter spill.
Konklusjon