skyde stjerner med stardust - partikel motor

skyder stjerner med stardust - partikel motor,,,,, andel,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne forelæsning vil jeg præsentere stardust - partikel - motor.først vil jeg vise dig, hvordan at oprette stardust, og så vil jeg dække grundlæggende stardust klasse ansvar, og hvordan de arbejder sammen for at gøre stardust arbejde som helhed. næste, vil vi se en stardust generelle arbejdsgang og komme til at skabe en partikel virkning med stjerner skyder ud fra mus markør og stjernerne, vil det bremse gradvist, blive større efter fødslen, og mindre, når døden. endelig vil jeg vise fleksibilitet af stardust, ved at skabe flere ændringer fra den fuldstændige eksempel, herunder ved hjælp af animerede film magasiner som partikler, variable partikel - tidshorisont, og skyder ud visning genstande af forskellige klasser fra en enkelt kilde.,,, resten er beregnet til mennesker, der allerede erbekendt med actionscript 3,0 samt programmering (ups), så jeg går ud fra, at du allerede vidste udmærket, hvad klasser, genstande, arv og grænseflade.ingen problem med dig?så lad os skyde nogle stjerner!,,,,, stardust partikel motor, som navnet antyder, stardust anvendes til at oprette partikel virkninger.hvis du er en erfaren actionscripter, du har måske skabt partikel virkninger fra bunden, mange gange, og siger, "jeg er helt cool med at skabe partikel virkninger fra bunden, så hvorfor skulle jeg have en partikel motor?"nå, stardust, er her for at hjælpe dig med at fokusere mere på de faktiske partikel opførsel design end at bekymre sig om den kedelige, der ligger til grund for små ting, som f.eks. minde ledelsen.i stedet for at skrive koden til at tage sig af partikel data, starter og afsætte ressourcer til stardust, du får lov til at slippe for disse kedelige rutiner og beslutte, hvordan vil du have din partikler opfører sig., stardust kendetegn, klasse struktur af stardust blev inspireret af flint partikel system, en anden actionscript 3,0 partikel - motor.således har de nogle lignende grundlæggende karakteristika,.,, 2d og 3d - partikel virkninger - stardust, kan anvendes til at skabe både 2d og 3d - partikel virkninger.det har sin egen indbyggede 3d - motor, og det kan også benyttes til at arbejde i kombination med andre tredjelande partikel 3d - motorer, herunder zedbox, papervision3d, og nd3d.,, høje extensibility - stardust giver en lang række af partikel adfærd og renderers til deres rådighed.hvis ingen af dem opfylder dine behov, kan du udvide basen klasser og skabe din egen skik partikel adfærd; også, kan du skabe dit eget renderer arbejde med en ny 3d - motor, som ikke støttes af stjernestøv., ud over disse grundlæggende karakteristika, stardust giver også flere avancerede funktioner for erfarne brugere.,, justerbar simulering tidshorisont, - den tidshorisont, der anvendes til partikel simulering kan være dynamisk justeres under driftstid.hvis du f.eks. ændre tidsplanen for halvdelen af den oprindelige, partikel virkning vil være halvt så hurtigt som normal hastighed, og hvis du ændre tidsplanen til det dobbelte af den oprindelige, partikel virkning vil blive simuleret dobbelt så hurtigt som normale.denne egenskab kan komme til nytte, når man skaber et spil, der har slowmotion virkninger: partikel virkning kan bremse passer til dit spil motorens hastighed, synkronisere med dit spil, animation og grafik.xml - serialization,,, - - du kan ændre din partikel - system med en fil i xml - format, der kan lagres på din harddisk, senere lastes i løbe tid og fortolkes for at genopbygge deres igen partikel - system.det er meget nyttigt, når man arbejder med et stort projekt.du vil bare størrelse op din partikler lidt, så du pirre parametre i kildekoden, og recompile hele din flash anvendelse, der kan tage et minut, eller endda over fem minutter hvis dit projekt er meget stor.er det det værd?nej. det er spild af tid.ved brug af xml - serialization element for at redde din partikel - systemet i eksterne xml - filer, du er separeret parametre fra kildekoden i hovedsagen.hvad du skal gøre, er at åbne xml - filer, ændre de parameterværdier, gem det, og genoptage deres vigtigste anvendelse.det er det!ingen omarbejdelse af dette katalog er nødvendig på alle.jeg vil sige, at dette er en ideel måde at arbejde med store projekter., når det kommer til partikel virkninger, er det meget vigtigt at håndtere store partikel data effektivt.stardust får omfattende brug af objekt puljer og knyttet lister for at forbedre udførelsen:,, objekt puljer, - - brugte genstande, opbevares i en pool og senere, hvis genstand for samme type er påkrævet, stardust ikke instantiate det straks, men kontrol, hvis der er nogen genstand, tidligere var oplagret genstand pool.hvis ja, stardust blot tager det objekt, og bruger det i stedet for at skabe en helt ny genstand.normalt partikel virkninger indebærer en masse ting instantiation, som er cpu bruger.ved hjælp af objekt puljer, stardust, reducerer i høj grad instantiation ovenover., i forbindelse med lister, - det er meget nemt og fristende at opbevare partikel data i et system; men i en sag, hvor partikler er skabt og fjernet meget hyppigt, en masse array splejsning finder sted for at fjerne døde partikler.array - splejsning er en cpu 'en tidskrævende proces, især for længe arrays.for en knyttet liste, uanset hvor lang listen er, at det altid er de samme kort tid til at dele ud død partikler.fra version 1.1, stardust begyndte at bruge knyttet lister internt opbevarer partikel - data., at stardust, før vi kommer til faktiske kodning, vi bliver nødt til at tage en kopi af stardust partikel - motor.det er frigivet under mit kørekort, hvilket betyder, at det er helt gratis, uanset om du vil bruge det til kommercielle eller ikke - kommercielle projekt. her er stardust - projekt hjemmeside: http://code.google.com/p/stardust-particle-engine/, du kan downloade stardust her: http://code.google.com/p/stardust-particle-engine/downloads/list på nuværende tidspunkt, den seneste udgave, som kan downloades fra download liste er 1.1.132 beta.du kan altid tage den seneste revision af svn register (som ikke er stabil, men). på projektets hjemmeside, så kan du også finde mere tilbehør som api - dokumentation og en kopi af pdf - manual.der er endda video tutorials på youtube., stardust klasse ansvar, og her vil jeg kort komme ind på stardust centrale klasser og deres ansvar. stardustelement, denne klasse er overklassen af alle centrale klasser, der definerer egenskaber og navnlig metoder for xml - serialization. et generelt partikel virkninger er alt om kontrol med et antal enheder med tilsvarende, men randomiserede udseende og opførsel.de tilfældige klasse er til generering af tilfældige tal, som kan anvendes i stardust for randomizing partikel egenskaber.f.eks. uniformrandom klasse er en underklasse af tilfældige klasse, og dets navn siger alt: tilfældigt tal som følge af en uniformrandom objekt er ligeligt fordelt, og jeg vil bruge denne klasse, navnlig for hele tutor., en zone, der er tidspunkter, hvor en endimensional tilfældige tal er ikke nok.nogle gange har vi brug for todimensionale tilfældige tal, som i alt væsentligt er par tilfældige tal for egenskaber som position og hastighed.zonen klasse for at skabe todimensionale vilkårligt nummer to.denne klasse modeller et vilkårligt nummer to som et tilfældigt sted i 2d - zone.f.eks. circlezone skaber tilfældige antal par (x, y) fra tilfældige punkter inden for et cirkelformet område.den tilfældige og zone klasser anvendes hovedsageligt af initializer klasse, der vil blive behandlet senere.den zone3d klasse er 3d - modpart i denne klasse, for 3d - partikel virkninger., kilde, kilde klasse er dybest set, hvor alle de små ting ligger.et andet initializes nyoprettede partikler, før de er indsat i simuleringen, ajourfører partikel egenskaber i hver af de vigtigste loop iteration og fjerner døde partikler fra computeren.den udsender. step() metode er, hvad du ønsker at påberåbe sig gentagne gange for at holde stardust op og køre, ur, uret klasse bestemmer antallet af partikler for emissioner.et andet formål er en henvisning til et ur objekt.i begyndelsen af hvert køretøj. step() metode, de udleder stiller uret objekt, hvor mange nye partikler, bør det skabe.tag steadyclock klasse f.eks. det fortæller drivhusgasudledere at skabe nye partikler med en konstant hastighed. initializer, denne klasse er initialiserer nyoprettede partikler.en initializer objekt, der skal tilføjes en sender, for at det virker.dybest set, en initializer underklasse initializes en partikel ejendom.for eksempel, den masse, initializer klasse initializes massen af partikler.nogle initializers acceptere en tilfældig objekt som en konstruktør paramter for initialiserer partikler med randomiseret værdier.følgende kode skaber et liv initializer, som initializes partikel liv - værdier, centreret på 50 med ændring af 10, nemlig mellem mellem 40 og 60., nyt liv (nye uniformrandom (50, 10), handling, genstande, ajourføre partikel egenskaber i hver udgave af de vigtigste loop (emiter step() metode.).for eksempel, de flytter ind klasse opdateringer partikel positioner i henhold til hastighed.en aktion objekt, skal lægges til en kilde til. general stardust arbejdsgang, nu ved du, hvordan de centrale kurser arbejde sammen, lad os se på en generel gennemgang af stardust. du begynder ved at skabe en emitter.brug emitter2d klasse for 2d partikel virkninger og emitter3d klasse for 3d virkninger., var kilde: udleder = nye emitter2d();, at angive antallet af partikler, vi har brug for et ur.dette kan enten være fastsat af emitter.clock ejendom eller ved at vedtage et ur, som den første parameter til vækst er konstruktøren. //ejendom tilgang emitter.clock = nye steadyclock (1) //konstruktøren tilgang var kilde: udleder = nye emitter2d (nye steadyclock (1), tilføjes initializers til vækst gennem udsender. addinitializer() metode., udsender. addinitializer (nyt liv (nye uniformrandom (50, 10)) udsender. addinitializer (nye skala (nye uniformrandom (1, 0, 2)), og der tilsættes aktioner til vækst gennem dig. addaction() metode., udsender. addaction (nye move()) udsender. addaction (nye spin()), skabe en renderer og tilføje den kilde til renderer gennem renderer. addemitter() metode., var renderer: renderer = nye displayobjectrenderer (beholder); //"containere" er vores container sprite renderer. addemitter (emitter); endelig gentagne gange kalder dig. step() metode til at holde partikel - simulering.du vil måske bruge træde ramme begivenhed eller en timer til at gøre dette.i en enkelt indkaldelse af dig. step() metode, uret er bestemmende for, hvor mange nye partikler må skabes, disse nye partikler er igangsat af initializers, alle partikler ajourføres af aktioner, døde partikler fjernes, og endelig den renderer gør partikel virkning. //træde ramme begivenhed tilgang addeventlistener (event.enter_frame, mainloop); //timer tilgang her. addeventlistener (timerevent.timer, mainloop); funktion mainloop e: begivenhed): tomrum {kilde. step();}, okay.det er stort set det hele til stardust patron.nu er det tid til at åbne flash ide og få beskidte hænder, trin 1: skabe en ny flash dokument, skabe en ny flash dokument med en dimension af 640x400 en ramme, der 60fps og mørk baggrund.jeg har lavet en mørkeblå gradient baggrund.af den måde, stardust fungerer godt med begge flash spiller, 9 og 10, så det er okay uanset du bruger flash cs3 eller cs4.i denne lektion, jeg vil bruge flash cs3.,,, trin 2: drage en stjerne, vi er ved at skabe en partikel virkning med stjerner, så vi bliver nødt til at trække en stjerne og omdanne det til et symbol, der eksporteres til actionscript selvfølgelig.dette symbol skal bruges senere at gøre vores partikel virkning.navn symbol og eksporterede klasse "star".,,, trin 3: skabe dokument klasse, skaber et nyt dokument, klasse, og navnet på det starparticles., pakke (import flash.display.sprite; offentlige klasse starparticles udvider sprite {offentlige funktion starparticles() {}}}, trin 4: forlænge den kilde, som er nævnt i generelle arbejdsgang, det første skridt er at skabe en emitter.og det næste skridt er at tilføje initializers og aktioner til dig.det kan gøres i dokumentet klasse konstruktør, jeg anbefaler stærkt, at det gøres i et særskilt køretøj anvendes.det er altid bedre at adskille partikel opførsel design udgøre det vigtigste program, så, koden er meget renere og lettere at ændre i fremtiden, uden at blive blandet sammen med de vigtigste program. vi vil skabe et 2d partikel virkning, så emitter2d er udleder klasse vi skal udvide.udvide emitter2d klasse og hedder det staremitter, da vi skal gøre det så stjerner senere.de udleder konstruktøren accepterer et ur parameter, så vi kan erklære en konstruktør parameter til at videregive et ur imod henvisning til overklassen er konstruktøren., pakke (import idv.cjcat.stardust.twod.emitters.emitter2d; offentlige klasse staremitter udvider emitter2d {offentlige funktion staremitter (ur: clock) (//over uret mod, at overklassen er konstruktøren super (ur);}}}, løntrin 5: erklærer konstanter, en bedre metode til at skabe en emitter underklasse er at erklære partikel parametre som statisk konstanter, der er samlet på ét sted.så hvis du ønsker at ændre parametrene, vil du altid ved, hvor erklæringer.betydningen af disse konstanter vil blive forklaret senere, når de anvendes. //gennemsnitlige levetid menig static i denne life_avg: antal = 30; //levetid variation menig static i denne life_var: antal = 10; //gennemsnitlige størrelse menig static i denne scale_avg: antal = 1; //omfang variationer menig static i denne scale_var: = 0, 4; //omfang stigende gang menig static i denne growing_time: antal = 5; //omfang krympetid menig static i denne shrinking_time: antal = 10; //gennemsnitshastighed menig static i denne speed_avg: antal = 10 //- hastighed variation menig static i denne speed_var: antal = 8; //gennemsnitlige omega (vinkelhastighed menig static i denne omega_avg): antal = 0; //omega variation menig static i denne omega_var:antal = 5; //dæmpning koefficient, menig static denne dæmpning: antal = 0, 1. trin 6: forøgelse af initializers, som initializers skal vi skabe vores partikel virkning?lad os se på nedenstående liste:,, displayobjectclass, - det initializer tildeler en bestemt vise mod, at hver partikel, der skal anvendes af en displayobjectrenderer at gøre partikel virkninger.konstruktøren accepterer en klasse henvisning til skærmen objekt klasse, vi ønsker at instantiate; for denne forelæsning, denne klasse vil være stjerne - klasse (symbol) oprettede vi i trin 2.,, liv, - initializer tildeler hver partikel en tilfældig liv værdi.senere vil vi tilføje foranstaltninger til at reducere dette liv værdi gennem hele tiden, og at mærke en partikel - som død, hvis dens værdi til nul.en tilfældig objekt er gået til producenten, som vil blive anvendt ved denne initializer skabe tilfældig værdi for partikler 'liv.i de fleste tilfælde, uniformrandom klasse er passende og tilstrækkelig; den første parameter i uniformrandom konstruktøren er centrum (gennemsnit) værdien af de tilfældige tal, der produceres, og den anden er radius (variation).for eksempel, et uniformrandom genstand med center 20 og variation 5 skaber tilfældige numre i [25] rækkevidde.her bruger vi den life_avg konstant i midten værdi og life_var for radius.,, omfang, som livet initializer, omfanget initializer initializes en partikel er omfang til en tilfældig værdi, der bestemmes af en tilfældig genstand for initializer er konstruktøren.her bruger vi den scale_avg konstant i midten værdi og scale_var for radius.,, position, - initializer tildeler en partikel, en tilfældig holdning.i modsætning til liv og omfanget initializers, der kun kræver 1d tilfældige tal, den holdning, initializer kræver 2d vilkårligt nummer to generatorer.som beskrevet i stardust - klasse ansvar afdeling, zone klasse er netop til dette formål.den zone, genstand for initializer er konstruktøren anvendes til at generere 2d tilfældigt antal par, som vil blive overdraget til partikler som holdning vektorer.i denne forelæsning, vi bliver stjerner skyde ud fra et enkelt punkt, der ligger på mus markør, så vi skal bruge en singlepoint klasse, som er en zone underklasse.for at tilpasse denne singlepoint dynamisk koordinere genstand fra det dokument, klasse, vi har brug for en henvisning til dette formål gennem en offentlig ejendom.det er, hvad "point" ejendomsret til.,, hastighed, - som den holdning, initializer, hastighed initializer har brug for en zone formål at generere 2d tilfældige værdi par at nulstille partikel hastighed.et 2d vektor, der genereres af zonen objekt, som er en samordning af et tilfældigt sted i zonen, tildeles partikler som deres hastighed.her bruger vi den lazysectorzone klasse, der repræsenterer en sektor, region.en sektor, der er en del af en cirkel, der afgrænses af to radier og to vinkler.for lazysectorzone, de to vinkler er 0 - 360 af misligholdelse, svarende til en fuld vinkel rundt i en cirkel.den første konstruktøren parameter i lazysectorzone klasse er gennemsnittet af de 2 radier, og den anden er ændringen af radier.i dette tilfælde er gennemsnittet af de 2 radier repræsenterer den gennemsnitlige hastighed, og ændringen af radier repræsenterer variation i hastighed.her bruger vi den speed_avg konstant for første parameter og speed_var for den anden.,, rotation - rotation initializer initializes en partikel rotation vinkel til en tilfældig værdi.som nogle af de ovennævnte initializers, konstruktøren accepterer en tilfældig formål at generere en tilfældig værdi.vi vil gerne have partikler med vinkler, der spænder fra 0 til 360 grader, vi bruger 0 som centrum og 180 som radius af uniformrandom objekt.,, omega - omega, som i de fleste af de fysiske lærebøger, betyder vinkelhastighed.med det sagt, at det initializer er klar: det initializes en partikel er vinkelhastighed til en tilfældig værdi, og omega_avg konstant anvendes som centrum og omega_var som radius af uniformrandom objekt., og her er den kode, punkt = nye singlepoint(); addinitializer (nye displayobjectclass (star)); addinitializer (nyt liv (nye uniformrandom (life_avg, life_var)); addinitializer (nye skala (nye uniformrandom (scale_avg, scale_var)); addinitializer (ny stilling (punkt) addinitializer (nye hastighed (nye lazysectorzone (speed_avg, speed_var)); addinitializer (nye drejning (nye uniformrandom (0, 180)); addinitializer (nye omega (nye uniformrandom (omega_avg, omega_var)), trin 7: tilføjelse af foranstaltninger, okay, vi er færdige med initializers.nu er det tid til at tilføje aktioner til dig.nedenfor er der en liste over de foranstaltninger, vi har brug for:,, alder, - alder aktion falder en partikel, er livet værdi af 1 i hver andet skridt.,, deathlife, - - når en partikel, er livet værdi, når nul, det er partikel som død, ændre dens isdead ejendom fra falske til ægte.ved afslutningen af en emitter skridt, døde partikler fjernes.,,, - - som navnet antyder, flytte aktion opdateringer partikel positioner i henhold til deres hastighed.,, spin - svarende til videre handling, spin aktion ajourfører en partikel rotation vinkel i henhold til partikel er omega værdi (vinkelhastighed).,, dæmpning, - denne aktion forøger en partikel er veloctiy med en faktor på mellem [0, 1], simulering dæmpende virkninger og gradvis aftagende partikel.en faktor, der betyder ingen dæmpende på alle: partikler bevæge sig frit omkring, som om der ikke var nogen dæmpende virkning; en faktor på nul: den samlede dæmpning: alle partikler kan ikke flytte dig lidt.denne faktor er bestemt ved "dæmpning koefficient" gennem denne formel: "faktor = 1 - (dæmpende koefficient)".parameteren vedtaget for producenten er dæmpningen koefficient; her, vi vil bare have lidt dæmpende virkning, så vi bruger værdien 0,1 til koefficienten.,, scalecurve, - scalecurve aktion ændringer en partikel er - alt efter dens værdi.det vokser fra en første plan til en normal størrelse efter fødslen, og svinder til en endelig plan som den, dør.selvfølgelig, en partikel, kan også have en indledende eller afsluttende omfang værdi, der er større end den normale omfang; det afhænger af personlige valg.i mange tilfælde vil vi gerne partikler med en indledende og afsluttende omfang værdi på nul, hvilket er en standardværdi.den første parameter i den pågældende står for en partikel er stigende, og det andet er svagt, så går vi i growing_time og shrinking_time konstanter som den første og anden parameter, henholdsvis.den voksende er 5, dvs. en partikel vokser fra nul skala til normale omfang i de første 5 enhed af levetid, og den faldende er 15, hvilket betyder en partikel krymper til nul omfang i de sidste 15 enhed af levetid.bemærk, at overgangen er lineær ved misligholdelse, men enhver lempelse fucntion kan anvendes, navnlig at lette ligninger, der er skabt af robert penner.der er en lignende aktion, alphacurve,, der arbejder på alpha - værdier på samme måde.,, det er det.vores kilde er færdig.her er koden for det andet, i sin helhed, nødvendige import erklæringer, pakke (import idv.cjcat.stardust.common.actions.age; import idv.cjcat.stardust.common.actions.deathlife; import idv.cjcat.stardust.common.actions.scalecurve; import idv.cjcat.stardust.common.clocks.clock; import idv.cjcat.stardust.common.initializers.life; import idv.cjcat.stardust.common.initializers.scale; import idv.cjcat.stardust.common.math.uniformrandom; import idv.cjcat.stardust.twod.actions.damping; import idv.cjcat.stardust.twod.actions.move; import idv.cjcat.stardust.twod.actions.spin; import idv.cjcat.stardust.twod.emitters.emitter2d; import idv.cjcat.stardust.twod.initializers.displayobjectclass; import idv.cjcat.stardust.twod.initializers.omega; import idv.cjcat.stardust.twod.initializers.position; import idv.cjcat.stardust.twod.initializers.rotation; import idv.cjcat.stardust.twod.initializers.velocity; import idv.cjcat.stardust.twod.zones.lazysectorzone; import idv.cjcat.stardust.twod.zones.singlepoint; offentlige klasse staremitter udvider emitter2d {/* * * konstanter * /private statisk i denne life_avg: antal = 30, menig static i denne life_var: antal = 10, menig static i denne scale_avg: antal = 1, menig static i denne scale_var: antal = 0, 4; menig static i denne growing_time: antal = 5, menig static i denne shrinking_time: antal = 10, menig static i denne speed_avg: antal = 10, menig static const speed_var: antal = 8, menig static i denne omega_avg: antal = 0, menig static i denne omega_var: antal = 5, menig static denne dæmpning: antal = 0, 1; offentlige var punkt: singlepoint; offentlig funktion staremitter (ur: clock) (super (ur); punkt = nye singlepoint(); //initializers addinitializer (nye displayobjectclass (star)); addinitializer (nyt liv (nye uniformrandom (life_avg, life_var)); addinitializer (nye skala (nye uniformrandom (scale_avg, scale_var)); addinitializer (ny stilling (punkt) addinitializer (nye hastighed (nye lazysectorzone (speed_avg, speed_var)); addinitializer (ny rotation (nye uniformrandom (0, 180)); addinitializer (nye omega (nye uniformrandom (komga_avg, omega_var)); //foranstaltninger addaction (nye age()); addaction (nye deathlife()); addaction (nye move()); addaction (nye spin()); addaction (nye dæmpning (dæmpning)); addaction (nye scalecurve (growing_time, shrinking_time)}}}, trin 8: afslutte dokumentet klasse, nu er det tid til at gå tilbage til det dokument, klasse og gør det færdigt.lad os se på de resterende opgaver.,, skabe en staremitter. - vi skal instantiate den staremitter klasse, vi lige har afsluttet.,, tildeler et ur imod dig, - - vi vil have en jævn hastighed af partikelemissioner, så bruger vi den steadyclock klasse.parameteren gik til uret er konstruktøren er graden af emissionen, eller med andre ord, antallet af partikler, der er oprettet i hver andet skridt; en relativ sats på 0, 5 betyder i hvert andet trin, der er 50% chance for en ny partikel, der skal oprettes, og 50% chance for partikler, der er skabt., skabe en renderer, - til at visualisere partikel virkning, vil vi nødt til at have en renderer.den displayobjectrenderer bør anvendes i forbindelse med displayobjectclass initializer: initializer tildeler et display genstand for hver partikel, og renderer tilføjer disse vise objekter i en beholder er display liste, der løbende ajourføring af dem.i må heller ikke glemme at tilføje den kilde til renderer.,, ring til de vigtigste loop repeatly, - det sidste skridt holder stardust op og køre.her skal vi gøre brug af træde ramme begivenhed.nedenfor er fuldstændig kode for det dokument, klasse, nødvendige import erklæringer.,, pakke (import flash.display.sprite; import flash.display.stagescalemode; import flash.events.event; import flash.geom.rectangle; import idv.cjcat.stardust.common.clocks.steadyclock; import idv.cjcat.stardust.common.renderers.renderer; import idv.cjcat.stardust.twod.renderers.displayobjectrenderer; offentlige klasse starparticles udvider sprite (private var kilde: staremitter; offentlig funktion starparticles() (//instantiate den staremitter udleder = nye staremitter (nye steadyclock (0,5)); //beholderen sprite var beholder: sprite = nye sprite(); //den renderer, som gør det particle virkning var renderer: renderer = nye displayobjectrenderer (beholder); renderer. addemitter (emitter); //add beholderen til display - liste over baggrunden addchildat (container, 1); //gøre brug af træde ramme begivenhed addeventlistener (event.enter_frame, mainloop)} privat funktion mainloop e: begivenhed): ugyldig (//ajourføring af singlepoint holdning til mus holdning emitter. nr. x = mousex; emitter. nr. y = mousey; //kalder de vigtigste loop udsender. step();}}}, endelig er vi færdige!lad os se på resultatet.tryk ctrl + træde i flash test af film, og du vil se resultatet.,,, ændring 1: animeret stjerner, vi er ikke færdige endnu.lad os gøre nogle ændringer.den første er ved hjælp af animerede film magasiner for partikler, trin 9: skabe en tidslinje animation, denne første ændring er ganske enkel, ikke indebærer noget ekstra koder.det er så enkelt som at skabe en grundlæggende tidslinje animation.edit star symbol i flash ide, skabe en vigtig referenceramme, og ændre den stjerne er farve i denne ramme til rød.denne grundlæggende årsager stjernerne til at blinke mellem gul og rød.du måske ønsker at indsætte nogle flere tomme stel i mellem, da en ramme, der 60fps er for hurtig for to ramme at blinke.,,, nu prøve film og se resultatet.de blinkende stjerne virkning ser cartoonish; det kan bruges til klassisk svimmel stjerne virkninger, som ofte set tegnefilm.,,, ændring 2: tilpasning af tidshorisont, dynamisk, som jeg nævnte tidligere, er en af stardust - træk er "justerbare simulering tidshorisont", dvs. de frister, der anvendes af stardust for partikel simulering kan være dynamisk justeret.alle er ved at ændre emitter.steptimeinterval ejendom, som er 1 ved misligholdelse.følgende kode snippet ændringer denne værdi på 2, hvilket resulterer i partikler bevæger sig dobbelt så hurtigt og udleder at skabe nye partikler på dobbelt hastighed. emitter.steptimeinterval = 2; i denne ændring, vil vi skabe en slider på scenen og bruge det til dynamisk tilpasning af simuleringen tidshorisont. gå 10: skabe en slæde, trække en en del af komponenter panel på scenen.hedder det "skyder".,,, trin 11: fælde en parametre, vil vi gerne have en til at glide mellem 0, 5 og 2, hvilket betyder, at vi ønsker, at vores partikel - være mindst halvt så hurtigt som normale og højst to gange på hurtigt.også, "livedragging" korrekt, så vi kan se den ajourføring, som vi vaske en tommelfinger.,,, trin 12: en begivenhed til at lytte, og nu er vi nødt til at lytte til de slider ændrer begivenhed til dynamisk ændring simuleringen tidshorisont.den første import sliderevent klasse i dokumentet klasse., import fl.events. sliderevent; og så lytte til det slider ændrer begivenhed i dokumentet klasse konstruktøren., slider. addeventlistener (sliderevent.change, changetimescale); endelig ændre simulering tidshorisont i lytter.der tilføjes følgende til at lytte til det dokument, klasse, private funktion changetimescale e: sliderevent): ugyldig (emitter.steptimeinterval = slider.value;}, lad os se på resultatet.bemærker, at da du skrubbe en finger, til venstre, partikel simulation går langsommere, og hvis du skrubber ikke simulationen går hurtigere.,,, ændring 3: flere udviser klasse, stardust, indeholder en særlig initializer ringede switchinitializer.den pågældende accepterer to systemer som parametre; den første er et system af initializers, og den anden, med samme længde som den første, er et system af "vægt".hver gang stardust anvender denne initializer at nulstille partikler, som er en af de initializers i første række er udvalgt tilfældigt at nulstille partikler.mere vægt en initializer har, desto mere sandsynligt er det valgte for initialization.i denne ændring, vi kommer til at gøre dig skyde. ikke kun stjerner, men også hvide kredse. trin 13: tegner en cirkel, udarbejde en hvid cirkel, omdanne det til et symbol, der eksporteres til actionscript og navn symbol og klasse "cirkel".denne klasse er det, vi vil bruge den hvide kredse.,,, trin 14: skabe kontakt initializer, åben den staremitter klasse, og slette følgende linje.denne deaktiverer displayobjectclass initializer vi oprette i det foregående trin. addinitializer (nye displayobjectclass (star), nu tilføje følgende kode for producenten.vi vil gerne have stjerner og ring til udsendes ligeledes sandsynligt, så giver vi dem begge en vægt på 1. //den initializer for stjerner var doc1: displayobjectclass = nye displayobjectclass (star); //den initializer for hvide kredse var doc2: displayobjectclass = nye displayobjectclass (ring); //skift initializer var si: switchinitializer = nye switchinitializer ([doc1, doc2], [1, 1]); //add kontakten initializer til dig addinitializer (si); endelig test filmen.du kan se stjerner og cirkler er udledt ud fra den kilde, selv om vinkelhastighed kan vel ikke have stor virkning på kredse.,,, afslutning af pædagogiske, dette er slutningen af denne forelæsning.tak for det!du kan sige, det er en hel masse kode for at skabe sådanne enkle virkning, men hey, kan du huske at skrive en kode, bortset fra udformningen af partikler er opførsel på højt niveau.i fremtiden, hvis du ønsker at ændre din kode, vil du gerne se kode sådan, particle.vx * = 0, 9; particle.vy * = 0, 9; partikel. x + = particle.vx * 2 partikel. y + = particle.vy * 2, eller sådan?, udsender. addaction (nye dæmpning (0,1) udsender. addaction (nye move()); emitter.steptimeinterval = 2, stardust, er her for at hjælpe dig med at skabe partikel virkninger på lethed.design partikel opførsel på højt niveau, fortæl stardust, hvad de skal gøre, og lad stardust klare lav gennemførelse for dig!jeg håber, du har forstået, hvordan stardust fungerer internt og nr.















Previous:
Next Page: