hurtig tip: tilføje et sløret spor virkning til dine kugler

, hurtigt tip: tilføje et sløret spor virkning til dine kugler,,,,, andel,,,,,,,, 10,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss. denne post er en del af en serie kaldet skyde - ' em-up.build en stage3d skyde - ' dem: interactionstarling partikel virkninger for stage3d shooter spil i denne hurtige tip, du vil lære at bruge bitmapdata er, copypixels(), en metode til at skabe en meget hurtigt, sløret spor virkning for kugler i din duel spil.,,, endelige resultat forpremiere, lad os tage et kig på det endelige resultat, vi arbejder hen imod:,, anvende den pil nøgler eller wasd til skibet, - - og ramte område bar til at affyre kugler mod mus markør.,, trin 1: indledning og grundlæggende blitting, vil vi hurtigt (virkelig hurtigt) igennem den meget grundlæggende idé, der anvendes i blitting, før vi går videre, for vi vil anvende det i denne hurtige tip. kopiering, pixel.han skærm er kernen i blitting.i as3, det er gjort ved at kopiere et rektangulært område i det af en, bitmapdata, til en anden, bitmapdata, bruger bitmapdata. copypixels(),.,, billedet ovenfor viser præcis det.vi modtager pixels i et rektangulært område fra en bitmapdata, og sætte det ind i en anden. det, vi undersøger i denne hurtige tip er at kopiere det nødvendige i en tåge virkning, der anvendes i en container, der gælder efter blitting virkninger for at skabe den virkning, vi vil have.,, trin 2: bitmap beholder der er allerede et meget grundlæggende kode for et rum, shooter kamp allerede gjort i kilden filer, fordi det ikke er genstand for denne post.der er kun et skib, der bevæger sig med wasd eller pil nøgler.koden er meget udtalte sig, og det er meget grundlæggende, så du vil nok ikke have nogen problemer med at forstå det.den bruger indbyggede billeder til billederne i dit spil, men du kan også bruge ånder med en meget lille drejning på en funktion, vil vi senere skabe (vi vil diskutere dette i et øjeblik. lad os hoppe i, main.as, og skabe en, bitmap, som vil indeholde alle kugler og formål, der skal være sløret.tilføje det, før noget andet i børn liste. private var _container: bitmap; private var _containerdata: bitmapdata; private funktion lokalitet (e: begivenhed = null): ugyldig (removeeventlistener (event.added_to_stage, lokalitet); //skabe spiller skib og vektoren, som vil indeholde de kugler _playership = nye playership(); _bullets = ny vector. < playerbullet > c); //////////- påbegynder beholderen _containerdata = nye bitmapdata (550, 400, sandt, 0xffffffff); _container = nye bitmap (_containerdata); //addchild (_container); addchild (_playership); //lytter til kampen loop addeventlistener (event.enter_frame, onenterframe)}, så vidt det er meget enkelt.vi har kun skabt af beholderen og tilføjede, at skærmen liste.,, trin 3: tegning kugler i beholderen, på dette trin, hvad vi skal gøre, er at drage de kugler i beholderen hvert billede.vi vil gøre det i, onenterframe(), funktion, main, klasse, privat funktion onenterframe e: begivenhed): ugyldig (_playership. update(); //ajourføring hver kugle for (var - jeg: int = 0. jeg < _bullets.length; jeg + +) (_bullets [i]. update(); _containerdata. copypixels (bitmap (_bullets [i]. getchildat (0)). bitmapdata, bitmap (_bullets [i]. getchildat (0)). bitmapdata.rect, ny litra _bullets [i]. x, _bullets [i]. y)} //), den eneste linje om, at spørgsmål er linje 10.i den linje, vi trækker pixels i hver kugle (ved at få adgang til det, bitmapdata, kuglen er børn, som er den, bitmapdata, der indeholder pixel i den indbyggede billede) i deres position.hvis du ikke bruger indbyggede billeder på dit spil, du kan bruge, bitmapdata. draw() i stedet.denne metode er lidt langsommere, men det virker på samme måde. vi går hele rektangel med kuglen, bitmapdata, fordi vi ønsker at gøre det hele.du kan lege med dette rektangel og mulighed for at drage til at skabe meget sjovt resultater (f.eks. en holdning baseret på en regelmæssig funktion som f.eks. matematik. sin(), til at skabe en interessant spor virkning, selv om den kugle går kun i en lige linje, eller kun om "brand" af en raket kugle af vedtagelsen af en mindre rektangel med henblik på at skabe spor med skud). når man udarbejder og køre dit spil, får du noget som dette, efter at skyde et par kugler:,, men det er ikke det, vi virkelig ønsker.vi ønsker at tilføje et sløret spor virkning, hvad så?,, trin 4: at lægge slør indvirkning, dette er sidste trin.alt hvad vi har tilbage at gøre, er at anvende de sløre virkning i, bitmapdata, der indeholder alle de billeder fra kugler.for at gøre det, vi skal bruge, colormatrixfilter,., private var _colormatrixfilter: colormatrixfilter; private funktion lokalitet (e: begivenhed = null): ugyldig (removeeventlistener (event.added_to_stage, lokalitet); //skabe spiller skib og vektoren, som vil indeholde de kugler _playership = nye playership(); _bullets = nye vektor. < playerbullet > c); //////////- påbegynder beholderen _containerdata = nye bitmapdata (550, 400, sandt, 0); _container = nye bitmap (_containerdata); //////////- påbegynder matrix filter _colormatrixfilter = nye colormatrixfilter ([1, 0 0, 0 0, 0 1, 0 0, 0 0, 0, 1 0, 0 0, 0 0, 0, 99, 1 0]); //addchild (_container); addchild (_playership); //lytter til kampenloop addeventlistener (event.enter_frame, onenterframe)} privat funktion onenterframe e: begivenhed): ugyldig (_playership. update(); //ajourføring hver kugle for (var - jeg: int = 0. jeg < _bullets.length; jeg + +) (_bullets [i]. update(); _containerdata. copypixels (bitmap (_bullets [jeg]. getchildat (0)). bitmapdata, bitmap (_bullets [i]. getchildat (0)). bitmapdata.rect, ny litra _bullets [i]. x, _bullets [i]. y)} //////////at lægge slør indvirkning på beholderen _containerdata. applyfilter (_containerdata, _containerdata.rect den nye litra 0, 0), nye blurfilter (2, 1) _containerdata. applyfilter (_containerdata, _containerdata.rect, ny litra 0, 0), _colormatrixfilter); //}, colormatrixfilter, virker ved at manipulere med hver pixel i, bitmapdata i henhold til værdierne i den matrix filter.tag et kig på det, init(), funktion.vi skaber en ny, colormatrixfilter, der passerer et system med en flok værdier i den.disse værdier vil skabe forandring matrix af matrix filter, der giver os mulighed for at manipulere pixels i billedet. det virker som filter: hver enkelt del af den resulterende farve (røde, grønne, blå og alfa), beregnes ved at multiplicere den kilde komponenter, som de respektive tal i den pågældende række matrix og lægge dem sammen med det femte værdi af rækken., hvis vi f.eks. tager matrix filter, vi skabte i kode, som vores eksempel matrix filter, og vi anvender det til en pixel med værdier "røde = 50, grøn = 10, blå = 200, alpha = 128", som følge af den røde del af pixel "røde = (50 * 1) + (10 * 0) + (200 * 0) + (128 * 0) + 0 = 50", fordi den første række af vores matrix"1 0 0 0 0".alfakomponenten vil være "alpha = (50 * 0) (+ 10 * 0) + (200 * 0) + (128 * 0, 99) + 0 = 126", fordi den sidste række af vores matrix er ", 0 0, 99 0." kan du se, hvad der sker nu.?hvert billede vi mangedobler hver pixel er alfa på 0,99, at gøre det lidt mere gennemsigtige for at skabe sporet virkning.hvis du vil læse mere om, colormatrixfilter, du kan henvise til den dokumentation,., sløret virkning er ordnet ved anvendelse af en enkelt, blurfilter i, bitmapdata,., udarbejdelse af spillet nu, og du vil få den ønskede effekt.trin 3:,, og det er det, du har lært at anvende en, colormatrixfilter, med henblik på at skabe et sløret spor virkning, idet den meget hurtigt, bitmapdata. copypixels(), metode.med dette kan du tilføje slør indvirkning til hver genstand, de ønsker, og ikke bekymre sig om flash spiller farten ned, fordi du er, at alt for mange børn med sløret filtre på scenen.mange fede ting kan bygges med dette princip, er du nødt til at være kreative. tak for det!hvis du har spørgsmål, skal du sige.,

Copying pixels from an image
Trails aren't disappearing



Previous:
Next Page: