Building en enkel bilspill med Actionscript 3.0
en
Del
3
Del
Cyber Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
I denne opplæringen vil jeg gå gjennom de nødvendige trinnene for å bygge en enkel kjøreprogram. Du vil lære hvordan du legger keyListeners, eventListeners og et par andre ting ved hjelp av Actionscript 3.0. Jeg opprinnelig skrev dette programmet i Actionscript 2.0 og i denne opplæringen vil jeg sammenligne de to Action versjonene som vi går sammen. Dette bør derfor gjøre for en enkel tutorial for å begynne å bevege deg over til Actionscript 3.0
Trinn 1:. Sette opp File
< p> Åpne opp en ny Flash Actionscript 3.0 dokument, gå til vinduet Properties (hvis det ikke er åpent gå til Vindu > Properties) og klikk Rediger. . Endre FPS til 50, bredden til 1200px og høyden til 800px
I tidslinjen vinduet (Vindu > Tidslinje) opprette to flere lag, så det er tre totalt, blir navnet på tre: handlinger , fart, bil. Lås handlinger lag
Trinn 2:. Importere bilen Images
I kildefilene finner du disse tre filer:
carLeft.png
carRight.png
carStraight.png
Velg bilen lag og gå til Fil > Import > Import til scenen og importere carStraight bilde
Trinn 3:. Making the Car MovieClip
Velg bildet og trykk på F8 eller Modify > Konverter til Symbol. La alle innstillingene som standardinnstillinger (øverst til venstre berettiget og en MovieClip) og name it carMC.
Gi MovieClip en forekomst navn carMC i vinduet Egenskaper.
Dobbeltklikk på image, eller høyreklikk > Redigere. Velg bildet av bilen og gi den koordinatene x: -100, y: -230.
Disse kan bli endret til din smak, men jeg tenkte at disse syntes å fungere best og gjort bilen svinger ser det mest realistiske.
Lag to flere nøkkel etter den nåværende.
Velg den andre nøkkelbilde, slette bildet av bilen og gå til Fil > Import > Import til scenen og importere carLeft bildet. Deretter plasserer den på -100, -230.
Gjør det samme for tredje keyframe og importere carRight bildet. Posisjon som ved -100, -230 samt
Gå inn handlingene til hver keyframe (velg keyframe og traff F9 eller Høyreklikk > Handlinger) og skriv inn.
Stop ();
Nå dobbeltklikker du hvor som helst der det er ingenting, eller klikk på Scene 1 i venstre, for å gå tilbake til hoved artboard.
Fordi bilen er så stor i forhold til scenen, velg carMC og endre bredden til 100px og høyde på 189px. Dette skalerer ned alle tre bildene, men lar deg ta med størrelsen opp igjen hvis du må senere.
Deretter velger carMC og midt det på scenen ved hjelp av sluttar vinduet.
Så langt har vi satt ned filen opp, gjorde et MovieClip med tre rammer, hver med et bilde i det og en stop (); . kommandoen
Trinn 3: Legge til Speedometer
Når kontrollere bilen det vil være en indikator på skjermen som forteller deg hvor fort det går
Grip teksten. verktøyet og i Properties panelet (Vindu > Properties) sørge for at det står Dynamic Text, ikke statisk eller skrive inn tekst. Klikk hvor som helst på artboard, der du ønsker speedometeret skal plasseres (jeg valgte nederst til venstre) og klikk. Dette bør gjøre en tekstboks som er ca 100 px bred. Hvis den ikke gjør det, eller om dette ikke er bred nok, kan du justere den til en større størrelse. Gå tilbake til Properties panel og gi dynamisk tekst og instans navnet "speedometer"
Trinn 4:. Ta en titt på alle de etiske
Først vil jeg gi deg all koden slik at du kan se over det og så skal jeg gå gjennom det bit for bit forklare det
Var tilvekst. Antall = 0; //beløpet bilen beveger seg hver framevar carRotation: Number = carMC.rotation; //rotasjon av carvar posNeg: Nummer = 1; Div akselerasjon: Nummer = 0,05; //akselerasjon av bilen, eller mengden inkrementet blir økt hastighet by.var: Nummer = 0; //hastigheten på bilen som vil bli vist på screenvar Maxspeed: Number = 50; //tastatur fangst kode startvar keyLeftPressed: Boolean; Var keyRightPressed: Boolean; Var keyUpPressed: Boolean; Var spaceBarPressed:Boolean;addEventListener(Event.ENTER_FRAME,onEnterFrameFunction);stage.addEventListener(KeyboardEvent.KEY_DOWN,keyPressed);stage.addEventListener(KeyboardEvent.KEY_UP,keyReleased);//keyboard fangst kode endfunction onEnterFrameFunction (hendelse: hendelse) {//påvise hastighet hastighet = Math.round ((økning) * 5); speedometer.text = String (speed); if ((carMC.rotation < 180) & & (carMC.rotation > = 0)) {carRotation = carMC.rotation; posNeg = 1; } If ((carMC.rotation < 0) & & (carMC.rotation > -180)) {carRotation = -1 * carMC.rotation; posNeg = 1; } //Hvis Høyre-tasten nede rotere bilen klokken og endre bildet til carRight if (keyRightPressed) {carMC.rotation + = 0,5 * tilvekst; carMC.gotoAndStop (3); } //Hvis Venstre-tasten nede rotere bilen mot klokken og endre bildet til carLeft if (keyLeftPressed) {carMC.rotation - = 0,5 * tilvekst; carMC.gotoAndStop (2); } //Hvis verken Venstre eller Høyre-tasten nede endring bilde til carStraight if (keyLeftPressed &! &Amp;! KeyRightPressed) {carMC.gotoAndStop (1); } //Når opp tasten trykkes ... if (keyUpPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < - en))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } If (spaceBarPressed) {tilvekst - = 0,5 * akselerasjon; } If (spaceBarPressed &! &Amp; speed < Maxspeed) {tilvekst + = akselerasjon; }} Else {if (tilvekst > 0 & & spaceBarPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < - en))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } Tilvekst - = 4 * akselerasjon; } Else if (tilvekst > 0) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < - en))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } Tilvekst - = 1,5 * akselerasjon; } Else tilvekst = 0; }} funksjon keyPressed (event: KeyboardEvent) {if (event.keyCode == Keyboard.LEFT) keyLeftPressed = true; if (event.keyCode == Keyboard.RIGHT) keyRightPressed = true; if (event.keyCode == Keyboard.UP) keyUpPressed = true; if (event.keyCode == Keyboard.SPACE) spaceBarPressed = true;} funksjon keyReleased (event: KeyboardEvent) {if (event.keyCode == Keyboard.LEFT) keyLeftPressed = false; if (event.keyCode == Keyboard.RIGHT) keyRightPressed = false; if (event.keyCode == Keyboard.UP) keyUpPressed = false; if (event.keyCode == Keyboard.SPACE) spaceBarPressed = false;}
Trinn 5: Legge Variabler
Klikk på det første bildet av handlinger lag som du låst tidligere og trykk F9 (eller Høyreklikk > Handlinger). Legg koden inn her
Dette er de variablene vi trenger
Var tilvekst.:. Antall = 0; //beløpet bilen beveger seg hver framevar carRotation: Number = carMC.rotation; //rotasjon av carvar posNeg: Nummer = 1; Div akselerasjon: Nummer = 0,05; //akselerasjon av bilen, eller mengden inkrementet blir økt hastighet by.var: Nummer = 0; //hastigheten på bilen som skal vises på screenvar Maxspeed: Nummer = 50; //Den maksimale hastigheten bilen kan reise
Trinn 6: Lytte etter tastetrykk
Forklaringene er alle her, bortsett posNeg som jeg skal forklare senere
Var keyLeftPressed: Boolean; Var keyRightPressed.: boolean; Var keyUpPressed: Boolean; Var spaceBarPressed:Boolean;addEventListener(Event.ENTER_FRAME,onEnterFrameFunction);stage.addEventListener(KeyboardEvent.KEY_DOWN,keyPressed);stage.addEventListener(KeyboardEvent.KEY_UP,keyReleased);
When flytte over til AS3 dette var en av de mer forvirrende deler til meg. I AS2 skape funksjoner som skal kalles var mye lettere å kode. Du vil vanligvis bare ha en "hvis" statement inne en onEnterFrame funksjon som så ut til å se om _____ nøkkelen var nede. I AS3 er det en måte å gjøre dette på samme måte, men det fungerer ikke bra med spill. Bevegelsene er ikke glatt, og du kan ikke trykke to taster samtidig.
Jeg gjorde det her med booleans. For spillet mitt er jeg bare ute etter å se om fire tastene trykkes: Opp, Venstre, Høyre og Space, så jeg laget en boolsk for hver av dem. Jeg deretter lagt til tre lyttere
addEventListener (Event.ENTER_FRAME, onEnterFrameFunction);. \\
Denne koden er ganske mye tilsvarer onEnterFrame. På hver ramme (så i vårt tilfelle 50 ganger i sekundet) det utfører funksjonen onEnterFrameFunction. Årsaken er fordi det vil tillate oss å kontinuerlig oppdatere variabler, som hastighet, mens også sjekke om en tast er trykket (som den gjør indirekte gjennom en boolsk, som du vil se i en second).
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyPressed);stage.addEventListener(KeyboardEvent.KEY_UP,keyReleased);
These . er to lyttere som er lagt til scenen Det de gjør er når en tast (hvilken som helst tast) trykkes, funksjonen keyPressed blir kalt når en tast blir utgitt, er funksjonen keyReleased kalt
funksjon keyPressed (event..: KeyboardEvent) {if (event.keyCode == Keyboard.LEFT) keyLeftPressed = true; if (event.keyCode == Keyboard.RIGHT) keyRightPressed = true; if (event.keyCode == Keyboard.UP) keyUpPressed = true; if ( event.keyCode == Keyboard.SPACE) spaceBarPressed = true;} funksjon keyReleased (event: KeyboardEvent) {if (event.keyCode == Keyboard.LEFT) keyLeftPressed = false; if (event.keyCode == Keyboard.RIGHT) keyRightPressed = false; if (event.keyCode == Keyboard.UP) keyUpPressed = false; if (event.keyCode == Keyboard.SPACE) spaceBarPressed = false;}
Denne koden kommer på slutten av koden min, men jeg forklarer det nå fordi det dreier seg om tastetrykkene.
Disse er de to funksjonene keyPressed og keyReleased. Som jeg sa over, når en tast trykkes keyPressed blir kalt. Den kontrollerer de fire "hvis" uttalelser for å se om nøkkelen trykket er noen av de fire nøklene mitt program er på jakt etter. Hvis nøkkelen er en av dem, setter den boolsk av at nøkkelen til sann.
Hva keyReleased gjør er det motsatte. Når en tast slippes sjekker den for å se om det er en av de fire nøklene. Skulle dette være tilfelle, vil det sette boolsk av at nøkkelen tilbake til falsk
Trinn 7:. Forstå hvordan å flytte bilen Works
Hvis vi koding et spill hvor du trykker venstre tast flyttet bilen i -x retning, og treffer opp nøkkelen flyttet bilen i + y retning, ville ting bli mye enklere. Dette programmet er forskjellig. Så det er ingen innebygd funksjon i Flash som vil flytte bilen fremover basert på dagens retning, må vi lage det selv. Mens du gjør denne koden jeg måtte gjøre mye prøving og feiling, og jeg fant at det å jobbe bakover bidro mest. Jeg visste at når kortet ble vendt N, eller 0 grader, bør den gå i + x retning i full fart. Da bør det være vendt NE, eller 45 grader, vil det bevege seg i + x retning på halv fart, og i + y retning på halv hastighet
Trinn 8:. Legge onEnterFrame Funksjon
Først vil vi legge til onEnterFrame funksjonen. Som jeg sa ovenfor, vil denne funksjonen kalles på hver ramme
funksjon onEnterFrameFunction (hendelse: Hendelse). {}
Trinn 9: Coding nøklene
Nå vil vi legge til funksjoner som er kalt når en tast trykkes.
Husk at når en tast trykkes den keyPressed funksjonen kalles. Hvis det er en av de fire nøklene programmet er på jakt etter, vil det sette den tasten er boolsk å true og når den tasten slippes boolsk vil bli satt til false. Når en tast holdes nede, vil dens boolsk være sant
funksjon onEnterFrameFunction (hendelse: Hendelse). (! KeyLeftPressed & & keyRightPressed) {if (keyRightPressed) {} if (keyLeftPressed) {} if {} if (keyUpPressed) {} else {}}
Trinn 10: Roterende Bil
funksjon onEnterFrameFunction (hendelse: hendelse) {if (keyRightPressed) {carMC.rotation + = 0,5 * tilvekst; } If (keyLeftPressed) {carMC.rotation - = 0,5 * tilvekst; } If {} if (keyUpPressed) {} else {}}
Trinn 11 (keyLeftPressed &; & keyRightPressed!): Making the Car Wheels Slå
Når bilen svinger vi vil den skal se realistisk, så vi kommer til å bruke de andre bildene (carLeft og carRight) for å gjøre hjulene ser ut til å være å snu
funksjon onEnterFrameFunction (hendelse: Hendelse). {if (keyRightPressed) {carMC.rotation + = 0,5 * tilvekst; carMC.gotoAndStop (3); } If (keyLeftPressed) {carMC.rotation - = 0,5 * tilvekst; carMC.gotoAndStop (2); } If (keyLeftPressed &! &Amp;! KeyRightPressed) {carMC.gotoAndStop (1); } If (keyUpPressed) {} else {}}
Når venstre tast trykkes carLeft vises, når rett tast trykkes carRight vises. Når verken blir presset carStraight vises
Trinn 12:. Å få bilens rotasjon
Jeg skal ikke gå for dypt inn i forklaringen av regnestykket, fordi det er enten noe du får, eller du ikke. Men jeg skal prøve å forklare det så godt jeg kan. Som jeg sa, mye av dette var prøving og feiling og jobbe bakover, som jeg skal forklare så jeg går sammen
Måten flash lagrer rotasjon av et objekt er ikke fra 0 >. 360, er det fra -180 > 180, der -180 = 180.
funksjon onEnterFrameFunction (hendelse: hendelse) {if ((carMC.rotation < 180) & & (carMC.rotation > = 0)) {carRotation = carMC .rotation; posNeg = 1; } If ((carMC.rotation < 0) & & (carMC.rotation > -180)) {carRotation = -1 * carMC.rotation; posNeg = 1; } If (keyRightPressed) {carMC.rotation + = 0,5 * tilvekst; carMC.gotoAndStop (3); } If (keyLeftPressed) {carMC.rotation - = 0,5 * tilvekst; carMC.gotoAndStop (2); } If (keyLeftPressed &! &Amp;! KeyRightPressed) {carMC.gotoAndStop (1); } If (keyUpPressed) {} else {}}
Denne koden gjør er tar rotasjonen av bilen og får den absolutte verdi av det, slik at det alltid vil være positiv. Deretter lagrer det enten en (hvis det var opprinnelig positiv) eller -1 (hvis det var opprinnelig negativ) i variabelen posNeg, som vi vil bruke senere
Trinn 13:. Koding av Up Button
< p> Det er der hele majic skjer.
For å spare plass og gjøre det enklere å forstå jeg vil ikke lime den annen kode som tidligere ble lagt før dette trinnet. All kode i dette trinnet er lagt i mellom her:
if (keyUpPressed) {}
Trinn 14: Flytte Bil i Y Direction
I stedet for å gå gjennom og forklare det, her er en Tabellen beskriver hvordan bilen skal bevege seg i y-retningen basert på dens rotasjon.
grader (° C) Mengde til å bevege seg i Y-180-1-135-.5-900-45.50145.5900135-0,5180 til 1
Når bilen er mellom -90 og 90 det er vendt N til en viss grad, og når det er mellom -180 og -90, eller 90 og 180 det er vendt S til en viss grad.
Med noen raske matematikk Jeg kom opp med denne ligningen: Anmeldelser carMC.y - = ((90-carRotation) /90) * tilvekst;
Trinn 15: Flytte Bil i X Direction
Bestemme hvor mye bilen skal bevege seg i x-retningen tar litt mer arbeid
grader (°) Beløp å bevege seg i X-1800-135-.5-901-45.50045.5901135-0,51800 if (((carMC.rotation >.; 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180))) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < 0 ))) {carMC.x + = posNeg * ((carRotation) /90) * økning; }
Den første "hvis" avtaler med bilen vendt S og den andre når den er vendt N.
Trinn 16: Sette Kode Sammen
Det er grunnlaget for beregning av bevegelse og dette er hva du bør ha så langt i onEnterFrame funksjon:
funksjon onEnterFrameFunction (hendelse: hendelse) {if ((carMC.rotation < 180) & & (carMC.rotation > = 0)) {carRotation = carMC.rotation; posNeg = 1; } If ((carMC.rotation < 0) & & (carMC.rotation > -180)) {carRotation = -1 * carMC.rotation; posNeg = 1; } If (keyRightPressed) {carMC.rotation + = 0,5 * tilvekst; carMC.gotoAndStop (3); } If (keyLeftPressed) {carMC.rotation - = 0,5 * tilvekst; carMC.gotoAndStop (2); } If (keyLeftPressed &! &Amp;! KeyRightPressed) {carMC.gotoAndStop (1); } If (keyUpPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < 0 ))) {carMC.x + = posNeg * ((carRotation) /90) * økning; }} Else {}}
Trinn 17: Legge Acceleration
Hvis du skulle kjøre programmet akkurat nå (som du sannsynligvis ikke kan siden koden er ikke komplett) vår bil ikke ville reagere på opp-tasten trykkes. Dette er fordi trinn = 0. Så vi må legge en linje med kode som øker dette, men vil slutte å øke det når vår bil når topphastighet
funksjon onEnterFrameFunction (hendelse: hendelse) {if ((carMC.rotation < 180) & & (. carMC.rotation > = 0)) {carRotation = carMC.rotation; posNeg = 1; } If ((carMC.rotation < 0) & & (carMC.rotation > -180)) {carRotation = -1 * carMC.rotation; posNeg = 1; } If (keyRightPressed) {carMC.rotation + = 0,5 * tilvekst; carMC.gotoAndStop (3); } If (keyLeftPressed) {carMC.rotation - = 0,5 * tilvekst; carMC.gotoAndStop (2); } If (keyLeftPressed &! &Amp;! KeyRightPressed) {carMC.gotoAndStop (1); } If (keyUpPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < 0 ))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } If (speed < Maxspeed) {tilvekst + = akselerasjon; }} Else {}}
Trinn 18: Slippe Gas
Når du slipper gasspedalen på en bil det begynner å sakte decellerate på grunn av mange faktorer: Vind, dra, friksjon ... så vi må gjøre bilen tregere når pil opp ikke blir presset
funksjon onEnterFrameFunction (hendelse: Hendelse). {if ((carMC.rotation < 180) & & (carMC.rotation > = 0)) {carRotation = carMC.rotation; posNeg = 1; } If ((carMC.rotation < 0) & & (carMC.rotation > -180)) {carRotation = -1 * carMC.rotation; posNeg = 1; } If (keyRightPressed) {carMC.rotation + = 0,5 * tilvekst; carMC.gotoAndStop (3); } If (keyLeftPressed) {carMC.rotation - = 0,5 * tilvekst; carMC.gotoAndStop (2); } If (keyLeftPressed &! &Amp;! KeyRightPressed) {carMC.gotoAndStop (1); } If (keyUpPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < 0 ))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } If (speed < Maxspeed) {tilvekst + = akselerasjon; }} Else {if (tilvekst > 0) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < - en))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } Tilvekst - = 1,5 * akselerasjon; } Else tilvekst = 0; }}
Hva koden gjør er hvis Opp-tasten ikke er trykket og tilvekst er over 0, begynner det å senke tilvekst. Hvis økningen er ikke over 0, 0, ellers bilen vil bevege seg bakover.
Legg merke til at koden inne i "hvis" statement er den samme koden vi lagt inne if (keyUpPressed), bortsett fra at økningen er nå blir senket
Trinn 20:.. på bremsene
Siden bilen kan ikke bare stole på dra for å stoppe det, må vi også legge til en brems, som vil bli kodet til mellomromstasten
Koden for dette vil ha for å bli plassert på flere steder
if (keyUpPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst.; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < 0 ))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } If (spaceBarPressed) {tilvekst - = 0,5 * akselerasjon; } If (spaceBarPressed &! &Amp; speed < Maxspeed) {tilvekst + = akselerasjon; }}
Denne koden sier at dersom mellomromstasten trykkes mens pil opp-tasten trykkes, decellerate, men på et lavere tempo. Jeg deretter lagt til kode til en "hvis" statement vi har gjort tidligere for å sørge for at det ikke ble henrettet hvis mellomromstasten ble trykket.
Vi må også legge til kode når opp nøkkelen ikke blir trykket inn og mellomromstasten er .
if (keyUpPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < 0 ))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } If (spaceBarPressed) {tilvekst - = 0,5 * akselerasjon; } If (spaceBarPressed &! &Amp; speed < Maxspeed) {tilvekst + = akselerasjon; }} Else {if (tilvekst > 0 & & spaceBarPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < - en))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } Tilvekst - = 4 * akselerasjon; } Else if (tilvekst > 0) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < - en))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } Tilvekst - = 1,5 * akselerasjon; } Else tilvekst = 0; }
Trinn 21: Legge Speedometer Kode
Sist men ikke minst må vi legge til koden som registrerer fart og sender den til speedometer
Like etter.
funksjon onEnterFrameFunction (hendelse: hendelse) {
Legg til:
hastighet = Math.round ((økning) * 5); speedometer.text = String (speed);
Trinn 22: Fullfører
Som ganske mye oppsummerer denne opplæringen opp. Hva dette programmet kan gjøre er ganske grunnleggende, og jeg ville bare å skissere de viktigste delene i å lage et spill som dette. Etter fatte begrepene i denne opplæringen kan du også kode i ned-tasten, må grensene for bilen, selv foreta et racingspill. Jeg håper at du har lært minst en liten bit fra denne opplæringen, og takk for at du leser det
Final Kode:
Var tilvekst. Antall = 0; //beløpet bilen beveger seg hver framevar carRotation: Number = carMC.rotation; //rotasjon av carvar posNeg: Nummer = 1; Div akselerasjon: Nummer = 0,05; //akselerasjon av bilen, eller mengden inkrementet blir økt hastighet by.var: Nummer = 0; //hastigheten på bilen som skal vises på screenvar Maxspeed: Nummer = 50; //Den maksimale hastigheten bilen kan reise //tastatur fangst kode startvar keyLeftPressed: Boolean; Var keyRightPressed: Boolean; Var keyUpPressed: Boolean; Var spaceBarPressed:Boolean;addEventListener(Event.ENTER_FRAME,onEnterFrameFunction);stage.addEventListener(KeyboardEvent.KEY_DOWN,keyPressed);stage.addEventListener(KeyboardEvent.KEY_UP,keyReleased);//keyboard fangst kode endfunction onEnterFrameFunction (hendelse: hendelse) {//påvise hastighet hastighet = Math.round ((økning) * 5); speedometer.text = String (speed); if ((carMC.rotation < 180) & & (carMC.rotation > = 0)) {carRotation = carMC.rotation; posNeg = 1; } If ((carMC.rotation < 0) & & (carMC.rotation > -180)) {carRotation = -1 * carMC.rotation; posNeg = 1; } //Hvis Høyre-tasten nede rotere bilen klokken og endre bildet til carRight if (keyRightPressed) {carMC.rotation + = 0,5 * tilvekst; carMC.gotoAndStop (3); } //Hvis Venstre-tasten nede rotere bilen mot klokken og endre bildet til carLeft if (keyLeftPressed) {carMC.rotation - = 0,5 * tilvekst; carMC.gotoAndStop (2); } //Hvis verken Venstre eller Høyre-tasten nede endring bilde til carStraight if (keyLeftPressed &! &Amp;! KeyRightPressed) {carMC.gotoAndStop (1); } //Når opp tasten trykkes ... if (keyUpPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < - en))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } If (spaceBarPressed) {tilvekst - = 0,5 * akselerasjon; } If (spaceBarPressed &! &Amp; speed < Maxspeed) {tilvekst + = akselerasjon; }} Else {if (tilvekst > 0 & & spaceBarPressed) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < - en))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } Tilvekst - = 4 * akselerasjon; } Else if (tilvekst > 0) {carMC.y - = ((90-carRotation) /90) * tilvekst; if (((carMC.rotation > 90) & & (carMC.rotation < 180)) || ((carMC.rotation < -90) & & (carMC.rotation > -180)) ) {carMC.x + = posNeg * (((((1- (carRotation /360)) * 360) -180) /90) * økning); } If (((carMC.rotation < = 90) & & (carMC.rotation > 0)) || ((carMC.rotation > = -90) & & (carMC.rotation < - en))) {carMC.x + = posNeg * ((carRotation) /90) * økning; } Tilvekst - = 1,5 * akselerasjon; } Else tilvekst = 0; }} funksjon keyPressed (event: KeyboardEvent) {if (event.keyCode == Keyboard.LEFT) keyLeftPressed = true; if (event.keyCode == Keyboard.RIGHT) keyRightPressed = true; if (event.keyCode == Keyboard.UP) keyUpPressed = true; if (event.keyCode == Keyboard.SPACE) spaceBarPressed = true;} funksjon keyReleased (event: KeyboardEvent) {if (event.keyCode == Keyboard.LEFT) keyLeftPressed = false; if (event.keyCode == Keyboard.RIGHT) keyRightPressed = false; if (event.keyCode == Keyboard.UP) keyUpPressed = false; if (event.keyCode == Keyboard.SPACE) spaceBarPressed = false;}