Build en Mini Golf spill med Actionscript 3.0 
 en 
 Del 
 to 
 Del 
 Cyber Monday Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av. 
 
 I denne opplæringen Jeg skal vise deg hvordan du kan lage fine Mini Golf spill med Actionscript 3.0. We'll arbeid med hendelsesbehandlinger, funksjoner og også Timer objekt som er en veldig kul funksjon i AS3. 
 
 
 
 Innledning 
 
 Du finner det er mye tegning involvert med dette prosjektet. Hvis du heller ikke gjøre alt selv, bare laste ned filen programmeGolf.fla og hoppe til trinn 19 hvor programmerings del begynner 
 
 Trinn 1:. New File 
 
 La oss start ved å åpne en ny Actionscript 3.0 Flash File 
 
 Trinn 2:.. Dokumentinnstillinger 
 
 Endre dimensjonene i egenskapspanelet (600px 400 piksler) og sette bildefrekvens på 30 bilder i sekundet Anmeldelser 
 Trinn 3: Lage bakgrunns 
 
 Nå we'll forberede noen grafikk. Lag et rektangel (600px 400 piksler) og legg den til koordinerer 0, 0. Fyll rektangelet med en gradient (# 0066FF til #FFFFFF). 
 
 Velg objektet, og trykk på F8. Velg Movie Clip og gi den navnet "bakgrunn" 
 
 Trinn 4:. Legge Skyer og trær 
 
 Gå inn i bakgrunnen objekt (dobbeltklikk på den) og legge til noen grafikk. Jeg har lagt skyer og trær ved bare å plukke penselverktøyet og tegne noen enkle figurer. Gjør dette på et nytt lag for å holde ting organisert. For skyene Jeg brukte en lys blå farge (# 8FBBE8), for trær en lys fiolett farge (# 8DA5C7). Endelig dukket Jeg skyer og trær langs min scenen 
 
 Clouds 
  Trær 
  Endelig resultat 
 
 Trinn 5:. Ground 
 
 Endelig resultat 
 
 Trinn 5:. Ground 
 
 På hovedscenen skape et rektangel (600px x 50 piksler) og legg den til koordinerer 0, 350. Fyll rektangelet med en gradient (# 543201 til # 985B01). 
 
 Velg objektet, og trykk på F8. Velg Movie Clip og gi den navnet "bakken". Endre sin påmelding til venstre og eksport objekt for Actionscript. Klikk OK 
 
 Trinn 6:. Grass 
 
 Gå ned i bakken objekt (dobbeltklikk på den) og opprette et nytt lag. Plukk rektangel Primitive Tool (R), tegne en figur (10px av 20px) og plassere den på koordinatene 0, -35. Sett hjørneradiusen til 4px. 
 
 Kopier disse rektangler over hele scenen lengde. Nå velger alle av dem, gjøre dem redigeres (Ctrl + B) og fylle dem med en gradient (# 009900 til # 35FD35) 
 
 Trinn 7:. Hole 
 
 Nå skal vi lage en form som vil skjule vår jord og gress. Color derfor doesnt rolle. Lag et rektangel (900px ved 70px) og plassere den på koordinerer -300, -40. 
 
 opprette et "hull" form (20px av 40px) ved hjelp av Oval og rektangelverktøyet deretter plassere den på koordinerer 300, -40. Nå sørge for at hullet formen er på samme lag med vår blå firkant laget før. I så fall velger du den og slette. Du bør få den endelige utformingen av masken. 
 
 Trykk F8 og konvertere den til et filmklipp. Endre registreringspunkt til venstre og gi den navnet "grassMask". Når Movie Clip er opprettet, gir det en forekomst navnet "grassMask". 
 
 Nå bør vi sette maskering. Dobbeltklikk på laget der på bakken objekt er og velg "maskert" alternativet. Gjør det samme med gresset lag. I lag som inneholder "grassMask" objekt velge "maske" alternativet. Nå kan du la "bakken" objektet og gå tilbake til hovedscenen 
 
 Trinn 8:. Flag 
 
 Velg Brush Tool (B) og tegne en eierandel objekt (# C25C00). Nå plukke rektangel Tool (R) og tegne en Flag objekt (#FFDCDC). Velg både gjenstander og trykk F8. Velg Movie Clip og gi den navnet "flagg". Endre registreringspunkt og eksportere den for Action 
 
 Trinn 9:. Character 
 
 Nå er den verste delen begynner :) tegne en karakter. Jeg pleier å tegne noe for hånd og deretter tegne det i Flash, så la oss bruke min håndtegnet skannet bilde. Last den ned her og importere den inn i biblioteket (Fil > Import > Importer til bibliotek ...). Opprett en ny filmklipp (Ctrl + F8) og gi den navnet "bearMC". Dra bjørnen fra biblioteket på scenen, låse laget som inneholder bitmap og opprette et nytt lag. Vi må skille kroppsdeler slik at hver del vil være i et lag 
 
 Trinn 10:. Kroppsdeler 
 
 La oss starte med et hode. Plukk Brush Tool (B). Velg den største sirkel form og brun farge (# 432801). Begynne å tegne omrisset av hodet. Til slutt kan du velge Paint Bucket Tool (K) og fylle hodet med farger. God isn'ti det? :) Gjør det samme med armer, kropp, ben og golf pinne. Ikke glem å plassere alle deler i separate lag 
 
 Trinn 11:. Justering Kroppsdeler 
 
 Nå bør vi gjøre noen endringer. Først av alt slette lag med bjørn bitmap (vi bør også slette bjørnen bitmap fra biblioteket). Nå velger hele karakteren gjennom alle lagene. Fordi vi vil laste tegnet dynamisk ved hjelp av Actionscript, må vi ha riktig skala. Pick Free Transform Tool (Q) og gjøre bjørnen mindre (ca 80px bred) 
 
 Trinn 12:. Konvertering Kroppsdeler til Filmklipp 
 
 Klikk på det første bildet av hodet lag. Hele hodet skal nå velges. Trykk F8 og gi den navnet "hodet". Eksportere den for Action også. Gjør akkurat det samme med kroppen ("body"), armer ("armer") og stokk ("stikke") 
 
 Trinn 13:. Justering Pivot Points 
 
 Hvert objekt i Flash roterer rundt et dreiepunkt, så vi må justere dreiepunktene i vår pinne og armer. Gjemme hodet og kroppen lag og velg pinnen og armer lag. Du skal se dreiepunktene våre stedene. 
 
 Opprett en slags preg på et eget lag hvor de svinger burde egentlig være (mellom skuldrene) for å tillate riktig rotasjon. 
 
 Nå tar én av objektene og dra den inn på mark (dreiepunkt bør være på mark). Gjør det samme med det andre objektet. 
 
 Nå unhide alle lag og slette merket vi gjort før. Gå inn i armene objekt (dobbeltklikk på den) slik at du kan plassere armene i riktig posisjon. 
 
 La armene protestere og gjøre det samme med stokken. 
 
 Trinn 14 : Plassering av bjørn 
 
 Gå til hovedscenen, og opprette et nytt lag, navnet "bear". Ta "bearMC" fra biblioteket og dra den inn på hovedscenen. Med vår "bearMC" valgt trykk Ctrl + B. Nå kan du slette "bearMC" fra biblioteket 
 
 Trinn 15:. Apple 
 
 Trykk Ctrl + F8 og skape nye filmklipp. Name it "eple" og eksportere den for Actionscript. Bruk Brush Tool (B) og tegne et eple form. Du kan også legge til blad og en stilk hvis du vil. Nå velger hele objektet og skalere det ned ved hjelp av Free Transform Tool (Q), maksimalt 20px bredt 
 
 Trinn 16:. Apple Animation 
 
 Velg hele objektet på nytt, og trykk på F8. Name it "appleFall". Registreringen punktet bør være i midten. Gi den en forekomst navnet "appleFall" i egenskapsvinduet. 
 
 Gå inn i "appleFall" objekt (dobbeltklikk på den). Lag et nytt lag og gi den navnet "action". Gå til rammen 7 og opprette en ny keyframe (F6). Så gå til handlinger panel (F9) og skriv:. 
 Stop (); 
 Velg den første rammen og gjøre det samme 
 
 Nå kan du legge keyframes (F6) i andre, fjerde, sjette og syvende rammene av "eple" lag. Velg andre til sjette ramme og skape en bevegelse mellom (Høyreklikk > Create Motion Tween).. 
 
 Nå posisjons epler i nøkkelbildene omtrent på plassene vist på bildet nedenfor 
 
 Hvis alt er OK kan du gå tilbake til hovedscenen, og dra en "eple" objekt fra biblioteket til scenen 
 
 Trinn 17:. Tekstfelt 
 
 Lag et nytt lag og endre navn til "-meldinger ". Plukk en Text Tool (T) og opprette et nytt tekstfelt i midten av scenen (jeg valgte en blå Arial font). Sett felttype til Dynamic Tekst og tildele en forekomst navn "myMessage". Du kan låse lag nå 
 
 Trinn 18:. Score Counter 
 
 Lag et nytt lag og gi den navnet "counter". Igjen drar et eple objekt fra biblioteket på scenen og plassere den på 30, 30. Trykk Ctrl + B to ganger (fordi vi har to filmklipp å bryte - eple og appleFall) og fylle gjenstanden med en hvit farge. Gjør fem tilfeller og plassere dem i en linje. Velg alle av dem og trykke F8. Name it "counterBcg". Gå til egenskapspanelet og endrer farge fra ingen til alfa på 40%. 
 
 Dra et eple fra biblioteket på scenen, plasser den på 30, 30 og trykk Ctrl + B to ganger igjen. Trykk F8 og navnet Movie Clip "counter". Gå til dette objektet (dobbeltklikk på den) og legge til én keyframe. I denne keyframe fylle eple med en blå farge (dette eple vil bli vist i skranken hvis du går glipp av hullet) 
 
 Gå til handlinger panel av hver keyframe (F9) og skriv:. 
 Stoppe (); 
 Gå til hovedscenen, opprette fem forekomster av eple, igjen danner en linje. Hver Apple vil ha en forekomst navn ("a1", "A2", "a3" osv) 
 
 
 
 Trinn 19:. Forberedelse til programmering 
 
 Så her er vi er. Tegningen delen er over. Ta et stykke papir og notere koordinatene til hode, armer, kropp, stick, eple, bakke og flagg, slik at vi kan legge dem dynamisk. 
 
 Nå kan du slette dem fra scenen. 
 < p> Her er en rask nedbrytning av hvordan vi skal nærme seg realisering: 
 
 Trinn 20  Feste og posisjonering gjenstander 
 Alle objekter er tilstrekkelig festet og plassert på scene. 
 
 Trinn 21  Counter 
 Counter. 
 
 Trinn 22  Programmere Stick 
 Making the stick rotere. Anmeldelser 
 Trinn 23  Programmering Apple 
 Eple beveger seg når pinnen treffer den. 
 
 Trinn 24  Hit 
 Hvis Apples nær nok, det faller ned i hullet. 
 
 Trinn 25  Programmering en Counter 
 Hvis det var en vellykket hit, legger telleren en. 
 
 Trinn 26  Opprette Neste Prøv Bruke Timer Object 
 Når forsøket er over, vi kan prøve igjen etter to sekunder. 
 
 Trinn 27  Legge Tekstmeldinger 
 Vi legger noen meldinger for spilleren. 
 
 Trinn 28  Game Over 
 Hvis spillet er ferdig, kan vi spille igjen. 
 
 
 
 Trinn 20 : Feste og plassere objekter 
 
 Alle de programmering er plassert i den første rammen i handlinger laget. Så la oss lage et nytt lag og gi den navnet "tiltak". For det første, vil vi legge til tre blokker med kommentarer til vår kode: 
 //Variabler //EventListeners //funksjoner 
 Når kommentarene er klar vi kan legge til følgende kode som vil knytte våre gjenstander fra biblioteket til scenen . 
 
 (Ekstra linjer 2-8, 13-23) 
 //Variablesvar myHead = new hodet (); Var myArms = nye armer (); Var myBody = ny kropp (); Var Mystick = ny stokk (); Var myGround = ny mark (); Var myFlag = new flagg (); Var myApple = new apple (); //EventListeners //Functionsfunction resetScene (): void {addChild (myHead); addChild (myArms); addChild (myBody); addChild (Mystick); addChild (myGround); addChild (myFlag); addChild (myApple); } ResetScene (); 
 Nå har vi alle våre objekter på scenen på koordinatene 0 er 0. Objekter festet på scenen hver gang resetScene funksjonen kalles. La oss se tilbake til vår stykke papir hvor vi noterte koordinatene. Vi vil også bruke en tilfeldig funksjon for å generere x posisjonen vår hullet og flagget 
 
 (Ekstra linjer 9, 22-39) 
 //Variablesvar myHead = ny leder ();. Var myArms = nye armer (); Var myBody = ny kropp (); Var Mystick = ny pinne (); Var myGround = ny mark (); Var myFlag = new flagg (); Var myApple = new apple (); Var grassMask: Number; //EventListeners //Functionsfunction resetScene (): void {addChild (myBody); addChild (myArms); addChild (myHead); addChild (Mystick); addChild (myGround); addChild (myFlag); addChild (myApple); grassMask = (320 + Math.random () * 260); myBody.x = 70; myBody.y = 296; myArms.x = 68; myArms.y = 276; myArms.rotation = 0; myHead.x = 70; myHead.y = 215; myStick.x = 68; myStick.y = 276; myStick.rotation = 0; myApple.x = 90; myApple.y = 331; myGround.x = 0; myGround.y = 375; myGround.grassMask.x = grassMask - 610; myFlag.x = grassMask; myFlag.y = 375; } ResetScene (); 
 * grassMask: variable beskrivelse 
  
 Vår fasen er 600px lang 
 
 Math.random funksjonen genererer tall fra 0 til 1. 
 
 Hvis vi multipliserer denne verdien med 260 får vi et tall mellom 0 og 260. 
 
 Hvis vi da legge 320 til dette resultatet, vil vi få området vi er ute etter: 320 til 580. Dette er regionen langs x-aksen der vi kan plassere våre hull og flagg 
  
 
 Trinn 21:. Counter 
 
 Alle gjenstander bør plasseres riktig og vår maske og flagg bør være på et vilkårlig stilling x. Legg til følgende linjer under resetScene funksjonen. Det vil skjule epler for å telle våre scorer 
 
 (Ekstra linjer 6-15) 
 ... resetScene (); funksjons invisibleApples (). Void {a1.visible = false; a2.visible = false; a3.visible = false; a4.visible = false; a5.visible = false; a6.visible = false; } InvisibleApples (); 
 
 
 Trinn 22: Programmere Stick 
 
 Nå vil vi legge lyttere for våre tastatur. Hvis vi trykker på en tast, vil onDown funksjonen kalles. Hvis vi da slipper en vilkårlig tast, vil onUp funksjonen kalles. Vi må også legge til et skriv ramme lytteren 
 
 Prinsippet er veldig enkelt.; Hvis du trykker på en tast, vil den variable kontrolløren inneholde verdien 1. Hvis du slipper knappen, vil den variable kontrolløren inneholde en verdi på 0. Hit-funksjonen, som dukker opp i hver ramme av vårt program (30 ganger per sekund i vårt tilfelle) vil fungere sammen disse verdiene (bekreftende eller negativ rotasjon). Variabler hastighetsøkning og speedDown er bare tall som forteller oss hvor stor rotasjon vil bli. Variabler minPower og maxPower fortelle oss minimum og maksimal grad av stick rotasjon. Skriv inn følgende linjer: 
 
 (Ekstra linjer 12,13,18-37) 
 //EventListenersstage.addEventListener(KeyboardEvent.KEY_DOWN, onDown); stage.addEventListener (KeyboardEvent.KEY_UP, onUp); scenen. addEventListener (Event.ENTER_FRAME, traff); //Funksjoner ... myFlag.x = grassMask; myFlag.y = 375; kontrolløren = 0; minPower = 0; } ResetScene (); funksjon onDown (e: KeyboardEvent): void {kontrolløren = 1; minPower = -20; } Funksjon onUp (e: KeyboardEvent): void {kontrolløren = 0; } Funksjon hit (e: Hendelses): void {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {myStick.rotation + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; }}} 
 Vi bruker noen nye variabler i koden, så vi må initialisere dem. Legg til følgende linjer til toppen. Variabler kontrolløren og minPower er deklarert i resetScene funksjon fordi de vil bli endret i løpet av programmet, og vi trenger å tilbakestille dem senere. 
 
 (Ekstra linjer 7-17) 
 //variabler ... Var myApple = new apple (); Var grassMask: Number; Var Speedup: int = 2; Var speedDown: int = Speedup * 8; Var kontrolløren: int; Var minPower: int; Var maxPower: int = 110; 
 
 
 Trinn 23: Programmere en Apple 
 
 Vi vil bruke metoden hitTestObject å hente informasjon om kollisjonen mellom vår pinne og eple. Hvis en kollisjon skjer, vil skuddet funksjonen kalles 
 
 (Ekstra linjer 7,8,16,30-32,36-40) 
 //Variables...var minPower. Int; Div maxPower: int = 110; Var styrke: Number; Var applePower: Number; //funksjoner ... funksjon onUp (e: KeyboardEvent): void {kontrolløren = 0; applePower = (myApple.x + myStick.rotation) * 3.2; } ... Funksjon hit (e: Hendelses): void {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {myStick.rotation + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}} Funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); myApple.x + = styrke /30; myApple.rotation + = styrke /4; } 
 
 
 Trinn 24: Hit 
 
 Shooting skal fungere. La oss nå kode et eple falle inn i hullet. Vi skal teste i vår bildefunksjonen om avstanden fra hullet er lite nok og styrken er lav nok. Skulle dette være tilfelle, kan vi spille vår klippet der et eple faller ned i hullet. Mine regler (tallverdier) er svært strenge. Du kan definere dine egne lysere reglene hvis du foretrekker 
 
 (Ekstra linjer 17,27-34,37,38) 
 //Variables...var styrke. Nummer, Div applePower: Number; Div avstand: Number; Var målet: int; //Functionsfunction resetScene (): void {... kontrolløren = 0; minPower = 0; target = 0; } ResetScene (); ... funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; }}} 
 Her er en oversikt over hvordan skuddet funksjonen virkelig fungerer. Det er veldig enkelt. Vi vil legge til noen linjer til det senere, men dette er kjernen. 
 
 Shot-funksjon ordningen 
 
 Sett styrke variabel 
 
 Sett avstand variabel 
 
 
  Hvis avstand og styrke er lav  og målet har ennå ikke blitt truffet 
 
 Spill klipp med eple falle i hullet 
 
 Sett eple rotasjon til null 
 
 Fortell våre variable at målet ble truffet 
   Hvis avstand og styrke er ikke sammen med våre verdier  og hvis styrke er likevel stor nok - lavere enn 5 og eple slutter å bevege seg 
 
 Apple holder som beveger seg langs x-aksen 
 
 Apple holder roterende 
 
  
 
 Trinn 25: Programmering av Counter 
 
 Nå skal vi lage en poengsum teller. For det første må vi klargjøre en ny variabel kalt tryShot; det teller forsøkene vi har gjenværende ved å øke en hver gang den resetScene funcion kalles. Hvis vi treffer hullet et eple vil vises. Hvis vi savner hullet et eple vil også dukke opp, men det vil hoppe til den andre rammen av klippet (som viser en blå eple). 
 
 (Ekstra linjer 6,7,15,16,31,37- 40) 
 //Variables...var distanse: Antall; Var målet: int; Var tryShot: int = 0; //Functionsfunction resetScene (): void {... minPower = 3; target = 0; tryShot ++; } ResetScene (); ... funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; dette ["a" + tryShot] .visible = true; }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; } Else {denne ["a" + tryShot] .visible = true; denne ["a" + tryShot] .gotoAndStop (2); }}} 
 
 
 Trinn 26: Lage forsøker du med Timer Objekt 
 
 Legg til følgende linjer i koden. De vil sørge for at nedtellingen funksjonen (som tilbakestiller scene og fjerner lytteren for skuddet funksjon) vil bli kalt to sekunder etter at et gitt skutt er over (det doesnt rolle om hullet var eller wasn't hit). Vi må også legge til en betingelse for vår hit funksjon som begrenser antall forsøk til seks. 
 
 (Ekstra linjer 7,13,22,30,44,55,64,69-72) Anmeldelser //Variables...var target: int; Var tryShot: int = 0; Var myTimer = new Timer (2000, 1); //EventListenersstage.addEventListener (KeyboardEvent.KEY_DOWN, onDown); stage.addEventListener (KeyboardEvent.KEY_UP, onUp); stage.addEventListener (Event.ENTER_FRAME, traff), myTimer.addEventListener (TimerEvent.TIMER, nedtelling); //Functionsfunction resetScene (): void {; ... Target = 0; tryShot ++; myApple.appleFall.gotoAndStop (1); } ResetScene (); ... funksjon hit (e: Hendelses): void {if (tryShot < 7) {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {Mystick. rotasjon + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}}} Funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; dette ["a" + tryShot] .visible = true; myTimer.start (); }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; } Else {denne ["a" + tryShot] .visible = true; denne ["a" + tryShot] .gotoAndStop (2); myTimer.start (); }}} Funksjon nedtelling (e: Timerevent): void {resetScene (); stage.removeEventListener (Event.ENTER_FRAME, shot); } 
 
 
 Trinn 27:. Legge Tekstmeldinger 
 
 Nå skal vi lage noen tekstmeldinger, for å la spilleren vet hva som skjer 
 
 (Ekstra linjer 8 29-31,43,53) 
 //Functionsfunction resetScene (): void {... tryShot ++; myApple.appleFall.gotoAndStop (1); myMessage.text = "Trykk en tast!"; } ResetScene (); ... funksjon hit (e: Hendelses): void {if (tryShot < 7) {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {Mystick. rotasjon + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}} Else {myMessage.text = "Game Over"; }} Funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; dette ["a" + tryShot] .visible = true; myMessage.text = "cooool!"; myTimer.start (); }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; } Else {denne ["a" + tryShot] .visible = true; denne ["a" + tryShot] .gotoAndStop (2); myMessage.text = "Bad Luck!"; myTimer.start (); }}} 
 
 
 Trinn 28: Game Over 
 
 Som vi har bygget en slik nydelig spill, det er en god sjanse for at vår spiller vil ønske å spille igjen :-) så la oss gjøre det mulig. Hvis spilleren har seks forsøk (blokken koden der vi skriver "Game Over") vi bør legge til en endelig lytter til vår scene. Det er en mus lytter og kaller en funksjon hvis du klikker hvor som helst 
 
 (Ekstra linjer 12-17,37,38,42,47) 
 //Functions...function invisibleApples (). Void { a1.visible = false; a2.visible = false; a3.visible = false; a4.visible = false; a5.visible = false; a6.visible = false; a1.gotoAndStop (1); a2.gotoAndStop (1); a3.gotoAndStop (1); a4.gotoAndStop (1); a5.gotoAndStop (1); a6.gotoAndStop (1); } ... Funksjon hit (e: Hendelses): void {if (tryShot < 7) {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {myStick.rotation + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}} Else {myMessage.text = "Game Over \\ nKlikk å spille igjen"; stage.addEventListener (MouseEvent.MOUSE_DOWN, playAgain); }} Funksjon playAgain (e: MouseEvent): void {resetScene (); invisibleApples (); tryShot = 1; stage.removeEventListener (MouseEvent.MOUSE_DOWN, playAgain); } 
 Final Kode 
 //Variablesvar myHead = ny leder (); Var myArms = nye våpen (); Var myBody = ny kropp (); Var Mystick = new stick (); Var myGround = ny mark (); Var myFlag = new flagg (); Var myApple = new apple (); Var grassMask: Number; Var Speedup: int = 2; Var speedDown: int = Speedup * 8; Var kontrolløren: int; Var minPower: int; Var maxPower : int = 110; Var styrke: Number; Var applePower: Number; Var distanse: Antall; Var målet: int; Var tryShot: int = 0; Var myTimer = new Timer (2000, 1); //EventListenersstage.addEventListener (KeyboardEvent .KEY_DOWN, onDown); stage.addEventListener (KeyboardEvent.KEY_UP, onUp); stage.addEventListener (Event.ENTER_FRAME, traff), myTimer.addEventListener (TimerEvent.TIMER, nedtelling); //Functionsfunction resetScene (): void {addChild ( kroppen min); addChild (myArms); addChild (myHead); addChild (Mystick); addChild (myGround); addChild (myFlag); addChild (myApple); grassMask = (320 + Math.random () * 260); myBody.x = 70; myBody.y = 296; myArms.x = 68; myArms.y = 276; myArms.rotation = 0; myHead.x = 70; myHead.y = 215; myStick.x = 68; myStick.y = 276; myStick.rotation = 0; myApple.x = 90; myApple.y = 331; myGround.x = 0; myGround.y = 375; myGround.grassMask.x = grassMask - 610; myFlag.x = grassMask; myFlag.y = 375; kontrolløren = 0; minPower = 0; target = 0; tryShot ++; myApple.appleFall.gotoAndStop (1); myMessage.text = "Trykk en tast!"; } ResetScene (); funksjons invisibleApples (): void {a1.visible = false; a2.visible = false; a3.visible = false; a4.visible = false; a5.visible = false; a6.visible = false; a1.gotoAndStop (1); a2.gotoAndStop (1); a3.gotoAndStop (1); a4.gotoAndStop (1); a5.gotoAndStop (1); a6.gotoAndStop (1); } InvisibleApples (); funksjon onDown (e: KeyboardEvent): void {kontrolløren = 1; minPower = -20; } Funksjon onUp (e: KeyboardEvent): void {kontrolløren = 0; applePower = (myApple.x + myStick.rotation) * 3.2; } Funksjon hit (e: Hendelses): void {if (tryShot < 7) {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {myStick.rotation + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}} Else {myMessage.text = "Game Over \\ nKlikk å spille igjen"; stage.addEventListener (MouseEvent.MOUSE_DOWN, playAgain); }} Funksjon playAgain (e: MouseEvent): void {resetScene (); invisibleApples (); tryShot = 1; stage.removeEventListener (MouseEvent.MOUSE_DOWN, playAgain); } Funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; dette ["a" + tryShot] .visible = true; myMessage.text = "cooool!"; myTimer.start (); }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; } Else {denne ["a" + tryShot] .visible = true; denne ["a" + tryShot] .gotoAndStop (2); myMessage.text = "Bad Luck!"; myTimer.start (); }}} Funksjon nedtelling (e: Timerevent): void {resetScene (); stage.removeEventListener (Event.ENTER_FRAME, shot); } 
 Konklusjon 
 
 Ganske enkelt wasn't det? Nå kan du lure rundt med alle slags ting; du kan legge til andre nivåer, terreng, kan du endre karakter, legge cheats inn i spillet, legge til en spillmenyen eller intro og så videre. Det finnes ubegrensede muligheter, så jeg håper du fant det nyttig og takk for lesing! 
            
            
 
		  
Previous:Flash Freebie: Flex 3 Bøker  
			 
        
Vår fasen er 600px lang
Math.random funksjonen genererer tall fra 0 til 1.
Hvis vi multipliserer denne verdien med 260 får vi et tall mellom 0 og 260.
Hvis vi da legge 320 til dette resultatet, vil vi få området vi er ute etter: 320 til 580. Dette er regionen langs x-aksen der vi kan plassere våre hull og flagg
 
 
 Trinn 21:. Counter 
 
 Alle gjenstander bør plasseres riktig og vår maske og flagg bør være på et vilkårlig stilling x. Legg til følgende linjer under resetScene funksjonen. Det vil skjule epler for å telle våre scorer 
 
 (Ekstra linjer 6-15) 
 ... resetScene (); funksjons invisibleApples (). Void {a1.visible = false; a2.visible = false; a3.visible = false; a4.visible = false; a5.visible = false; a6.visible = false; } InvisibleApples (); 
 
 
 Trinn 22: Programmere Stick 
 
 Nå vil vi legge lyttere for våre tastatur. Hvis vi trykker på en tast, vil onDown funksjonen kalles. Hvis vi da slipper en vilkårlig tast, vil onUp funksjonen kalles. Vi må også legge til et skriv ramme lytteren 
 
 Prinsippet er veldig enkelt.; Hvis du trykker på en tast, vil den variable kontrolløren inneholde verdien 1. Hvis du slipper knappen, vil den variable kontrolløren inneholde en verdi på 0. Hit-funksjonen, som dukker opp i hver ramme av vårt program (30 ganger per sekund i vårt tilfelle) vil fungere sammen disse verdiene (bekreftende eller negativ rotasjon). Variabler hastighetsøkning og speedDown er bare tall som forteller oss hvor stor rotasjon vil bli. Variabler minPower og maxPower fortelle oss minimum og maksimal grad av stick rotasjon. Skriv inn følgende linjer: 
 
 (Ekstra linjer 12,13,18-37) 
 //EventListenersstage.addEventListener(KeyboardEvent.KEY_DOWN, onDown); stage.addEventListener (KeyboardEvent.KEY_UP, onUp); scenen. addEventListener (Event.ENTER_FRAME, traff); //Funksjoner ... myFlag.x = grassMask; myFlag.y = 375; kontrolløren = 0; minPower = 0; } ResetScene (); funksjon onDown (e: KeyboardEvent): void {kontrolløren = 1; minPower = -20; } Funksjon onUp (e: KeyboardEvent): void {kontrolløren = 0; } Funksjon hit (e: Hendelses): void {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {myStick.rotation + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; }}} 
 Vi bruker noen nye variabler i koden, så vi må initialisere dem. Legg til følgende linjer til toppen. Variabler kontrolløren og minPower er deklarert i resetScene funksjon fordi de vil bli endret i løpet av programmet, og vi trenger å tilbakestille dem senere. 
 
 (Ekstra linjer 7-17) 
 //variabler ... Var myApple = new apple (); Var grassMask: Number; Var Speedup: int = 2; Var speedDown: int = Speedup * 8; Var kontrolløren: int; Var minPower: int; Var maxPower: int = 110; 
 
 
 Trinn 23: Programmere en Apple 
 
 Vi vil bruke metoden hitTestObject å hente informasjon om kollisjonen mellom vår pinne og eple. Hvis en kollisjon skjer, vil skuddet funksjonen kalles 
 
 (Ekstra linjer 7,8,16,30-32,36-40) 
 //Variables...var minPower. Int; Div maxPower: int = 110; Var styrke: Number; Var applePower: Number; //funksjoner ... funksjon onUp (e: KeyboardEvent): void {kontrolløren = 0; applePower = (myApple.x + myStick.rotation) * 3.2; } ... Funksjon hit (e: Hendelses): void {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {myStick.rotation + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}} Funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); myApple.x + = styrke /30; myApple.rotation + = styrke /4; } 
 
 
 Trinn 24: Hit 
 
 Shooting skal fungere. La oss nå kode et eple falle inn i hullet. Vi skal teste i vår bildefunksjonen om avstanden fra hullet er lite nok og styrken er lav nok. Skulle dette være tilfelle, kan vi spille vår klippet der et eple faller ned i hullet. Mine regler (tallverdier) er svært strenge. Du kan definere dine egne lysere reglene hvis du foretrekker 
 
 (Ekstra linjer 17,27-34,37,38) 
 //Variables...var styrke. Nummer, Div applePower: Number; Div avstand: Number; Var målet: int; //Functionsfunction resetScene (): void {... kontrolløren = 0; minPower = 0; target = 0; } ResetScene (); ... funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; }}} 
 Her er en oversikt over hvordan skuddet funksjonen virkelig fungerer. Det er veldig enkelt. Vi vil legge til noen linjer til det senere, men dette er kjernen. 
 
 Shot-funksjon ordningen 
 
 Sett styrke variabel 
 
 Sett avstand variabel 
 
 
  Hvis avstand og styrke er lav  og målet har ennå ikke blitt truffet    Hvis avstand og styrke er ikke sammen med våre verdier  og hvis styrke er likevel stor nok - lavere enn 5 og eple slutter å bevege seg     Nå skal vi lage en poengsum teller. For det første må vi klargjøre en ny variabel kalt tryShot; det teller forsøkene vi har gjenværende ved å øke en hver gang den resetScene funcion kalles. Hvis vi treffer hullet et eple vil vises. Hvis vi savner hullet et eple vil også dukke opp, men det vil hoppe til den andre rammen av klippet (som viser en blå eple).   (Ekstra linjer 6,7,15,16,31,37- 40)     Legg til følgende linjer i koden. De vil sørge for at nedtellingen funksjonen (som tilbakestiller scene og fjerner lytteren for skuddet funksjon) vil bli kalt to sekunder etter at et gitt skutt er over (det doesnt rolle om hullet var eller wasn't hit). Vi må også legge til en betingelse for vår hit funksjon som begrenser antall forsøk til seks.   (Ekstra linjer 7,13,22,30,44,55,64,69-72) Anmeldelser //Variables...var target: int; Var tryShot: int = 0; Var myTimer = new Timer (2000, 1); //EventListenersstage.addEventListener (KeyboardEvent.KEY_DOWN, onDown); stage.addEventListener (KeyboardEvent.KEY_UP, onUp); stage.addEventListener (Event.ENTER_FRAME, traff), myTimer.addEventListener (TimerEvent.TIMER, nedtelling); //Functionsfunction resetScene (): void {; ... Target = 0; tryShot ++; myApple.appleFall.gotoAndStop (1); } ResetScene (); ... funksjon hit (e: Hendelses): void {if (tryShot < 7) {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {Mystick. rotasjon + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}}} Funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; dette ["a" + tryShot] .visible = true; myTimer.start (); }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; } Else {denne ["a" + tryShot] .visible = true; denne ["a" + tryShot] .gotoAndStop (2); myTimer.start (); }}} Funksjon nedtelling (e: Timerevent): void {resetScene (); stage.removeEventListener (Event.ENTER_FRAME, shot); }     Nå skal vi lage noen tekstmeldinger, for å la spilleren vet hva som skjer   (Ekstra linjer 8 29-31,43,53)     Som vi har bygget en slik nydelig spill, det er en god sjanse for at vår spiller vil ønske å spille igjen :-) så la oss gjøre det mulig. Hvis spilleren har seks forsøk (blokken koden der vi skriver "Game Over") vi bør legge til en endelig lytter til vår scene. Det er en mus lytter og kaller en funksjon hvis du klikker hvor som helst   (Ekstra linjer 12-17,37,38,42,47)   Ganske enkelt wasn't det? Nå kan du lure rundt med alle slags ting; du kan legge til andre nivåer, terreng, kan du endre karakter, legge cheats inn i spillet, legge til en spillmenyen eller intro og så videre. Det finnes ubegrensede muligheter, så jeg håper du fant det nyttig og takk for lesing! 
 
 Spill klipp med eple falle i hullet 
 
 Sett eple rotasjon til null 
 
 Fortell våre variable at målet ble truffet 
 
 
 Apple holder som beveger seg langs x-aksen 
 
 Apple holder roterende 
 
 
 
 Trinn 25: Programmering av Counter 
 
 
 //Variables...var distanse: Antall; Var målet: int; Var tryShot: int = 0; //Functionsfunction resetScene (): void {... minPower = 3; target = 0; tryShot ++; } ResetScene (); ... funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; dette ["a" + tryShot] .visible = true; }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; } Else {denne ["a" + tryShot] .visible = true; denne ["a" + tryShot] .gotoAndStop (2); }}} 
 
 Trinn 26: Lage forsøker du med Timer Objekt 
 
 
 
 Trinn 27:. Legge Tekstmeldinger 
 
 
 //Functionsfunction resetScene (): void {... tryShot ++; myApple.appleFall.gotoAndStop (1); myMessage.text = "Trykk en tast!"; } ResetScene (); ... funksjon hit (e: Hendelses): void {if (tryShot < 7) {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {Mystick. rotasjon + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}} Else {myMessage.text = "Game Over"; }} Funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; dette ["a" + tryShot] .visible = true; myMessage.text = "cooool!"; myTimer.start (); }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; } Else {denne ["a" + tryShot] .visible = true; denne ["a" + tryShot] .gotoAndStop (2); myMessage.text = "Bad Luck!"; myTimer.start (); }}} 
 
 Trinn 28: Game Over 
 
 
 //Functions...function invisibleApples (). Void { a1.visible = false; a2.visible = false; a3.visible = false; a4.visible = false; a5.visible = false; a6.visible = false; a1.gotoAndStop (1); a2.gotoAndStop (1); a3.gotoAndStop (1); a4.gotoAndStop (1); a5.gotoAndStop (1); a6.gotoAndStop (1); } ... Funksjon hit (e: Hendelses): void {if (tryShot < 7) {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {myStick.rotation + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}} Else {myMessage.text = "Game Over \\ nKlikk å spille igjen"; stage.addEventListener (MouseEvent.MOUSE_DOWN, playAgain); }} Funksjon playAgain (e: MouseEvent): void {resetScene (); invisibleApples (); tryShot = 1; stage.removeEventListener (MouseEvent.MOUSE_DOWN, playAgain); } 
 Final Kode 
 //Variablesvar myHead = ny leder (); Var myArms = nye våpen (); Var myBody = ny kropp (); Var Mystick = new stick (); Var myGround = ny mark (); Var myFlag = new flagg (); Var myApple = new apple (); Var grassMask: Number; Var Speedup: int = 2; Var speedDown: int = Speedup * 8; Var kontrolløren: int; Var minPower: int; Var maxPower : int = 110; Var styrke: Number; Var applePower: Number; Var distanse: Antall; Var målet: int; Var tryShot: int = 0; Var myTimer = new Timer (2000, 1); //EventListenersstage.addEventListener (KeyboardEvent .KEY_DOWN, onDown); stage.addEventListener (KeyboardEvent.KEY_UP, onUp); stage.addEventListener (Event.ENTER_FRAME, traff), myTimer.addEventListener (TimerEvent.TIMER, nedtelling); //Functionsfunction resetScene (): void {addChild ( kroppen min); addChild (myArms); addChild (myHead); addChild (Mystick); addChild (myGround); addChild (myFlag); addChild (myApple); grassMask = (320 + Math.random () * 260); myBody.x = 70; myBody.y = 296; myArms.x = 68; myArms.y = 276; myArms.rotation = 0; myHead.x = 70; myHead.y = 215; myStick.x = 68; myStick.y = 276; myStick.rotation = 0; myApple.x = 90; myApple.y = 331; myGround.x = 0; myGround.y = 375; myGround.grassMask.x = grassMask - 610; myFlag.x = grassMask; myFlag.y = 375; kontrolløren = 0; minPower = 0; target = 0; tryShot ++; myApple.appleFall.gotoAndStop (1); myMessage.text = "Trykk en tast!"; } ResetScene (); funksjons invisibleApples (): void {a1.visible = false; a2.visible = false; a3.visible = false; a4.visible = false; a5.visible = false; a6.visible = false; a1.gotoAndStop (1); a2.gotoAndStop (1); a3.gotoAndStop (1); a4.gotoAndStop (1); a5.gotoAndStop (1); a6.gotoAndStop (1); } InvisibleApples (); funksjon onDown (e: KeyboardEvent): void {kontrolløren = 1; minPower = -20; } Funksjon onUp (e: KeyboardEvent): void {kontrolløren = 0; applePower = (myApple.x + myStick.rotation) * 3.2; } Funksjon hit (e: Hendelses): void {if (tryShot < 7) {if ((kontrolløren == 1) & & (myStick.rotation < maxPower)) {myStick.rotation + = speedup; myArms.rotation + = speedup; } Else {if (myStick.rotation > minPower) {myStick.rotation - = speedDown; myArms.rotation - = speedDown; } If (myStick.hitTestObject (myApple)) {stage.addEventListener (Event.ENTER_FRAME, shot); }}} Else {myMessage.text = "Game Over \\ nKlikk å spille igjen"; stage.addEventListener (MouseEvent.MOUSE_DOWN, playAgain); }} Funksjon playAgain (e: MouseEvent): void {resetScene (); invisibleApples (); tryShot = 1; stage.removeEventListener (MouseEvent.MOUSE_DOWN, playAgain); } Funksjon shot (e: Hendelses): void {styrke = (applePower - myApple.x); avstand = grassMask - myApple.x; if ((Math.round (avstand) < = 10) & & (Math.round (avstand) > = 3) & & (styrke < = 65)) {if (target == 0) {myApple.appleFall.play (); myApple.rotation = 0; target = 1; dette ["a" + tryShot] .visible = true; myMessage.text = "cooool!"; myTimer.start (); }} Else {if (styrke > 5) {myApple.x + = styrke /30; myApple.rotation + = styrke /4; } Else {denne ["a" + tryShot] .visible = true; denne ["a" + tryShot] .gotoAndStop (2); myMessage.text = "Bad Luck!"; myTimer.start (); }}} Funksjon nedtelling (e: Timerevent): void {resetScene (); stage.removeEventListener (Event.ENTER_FRAME, shot); } 
 Konklusjon 
 

