Golden egg: Bygg en Flash Game bruke Twitter API-kall
Del
Del
3
Share < .no> Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
I denne opplæringen vil jeg gå gjennom noen av de anvendelser av Twitter REST API, og hvordan du kan bruke den til å lage et spill som ikke bare viser sanntids Tweets, men bruker dem til å generere objekter spilleren kan samhandle med
Før du leser denne opplæringen, anbefaler jeg at du leser AS3 101 økter ved Dru Kepple, Forståelse JSON, forstå spillet Loop -. Basix, Greensock Tweening Plattform økter og kanskje noen design og animasjon tutorials
Endelig resultat Forhåndsvisning
La oss ta en titt på det endelige resultatet vi skal jobbe mot.
Trinn 1: La oss få Eiendeler Ready
Før vi kommer i gang vil vi trenger å sette opp noen eiendeler; vi bygger et spill, så vil du kanskje å gjøre det ser ganske :-). Vi vil trenge knapper for nye spill, Instruksjoner, Meny og Tweet (for spillerens score); Vi trenger også en bakgrunn, noen fugler, den gylne egg og sprakk egg. I tillegg til alle at vi vil trenge noen diverse eiendeler som for eksempel lasting meldingen, den Tweet melding, en "Følg meg" -knappen, instruksjoner vinduet og bar hvor du vil vise dine tweets.
Trinn 2: La oss lage noen klasser
For denne opplæringen vi skal jobbe med noen klasser, hvis du ikke er kjent med klasser bør du ta en titt på hvordan du bruker et dokument klasse i Flash tutorial.
Vi trenger en hovedklasse som vil være vår viktigste hjernen, det er den du vil koble til FLA fil. Bortsett fra det ene, vil vi trenge et spill klasse som vil håndtere spillet logikken i spillet og gjør det meste av arbeidet. Siden spill har hendelser som du trenger for å lytte til vi skal lage en klasse som heter GameEvent som vi vil bruke til å kommunisere med våre viktigste klassen. Vi vil også trenge en Egg klasse som vil holde dataene fra Tweet, hva slags egg at det vil være, og noen andre ting som vi vil trenge senere. Og vi trenger en TweetHolder klasse som vi vil lenke til et filmklipp på biblioteket, slik at vi kan autosize og legge til noen egenskaper til Tweet at vi vil vise. Alle disse klassene vil gå til vår com mappe som må være rett ved siden av vår FLA fil
Main.as
pakke com {import flash.display *..; //Utvider MovieClip forårsake dette vil være knyttet vår FLA fil public class Hoved strekker MovieClip {offentlig funksjon main () {//Her vil vi legge vår kode :-)}}}
Game.as
pakke com { importere flash.display. *; public class Spill strekker Sprite {offentlig funksjon Game () {//Her vil vi legge logikken for spillet vårt}}}
GameEvent.as
pakke com {import flash.events. *; //Dette vil være vår egendefinert hendelse så det vil forlenge Hendelses public class GameEvent strekker Hendelses {//Her vil vi lagre parametrene som vi vil få, slik at vi kan bruke dem senere, det er derfor det er offentlige offentlig Var parametre: String; //Her legger vi de params siden vi vil bruke den senere for å dele informasjon mellom klassene offentlig funksjon GameEvent (type: String = "Standard", params: String = null, bobler: Boolean = false, cancelable: Boolean = false) { //Vi trenger å initial vår super så vi får alle sine egenskaper super (type, bobler, cancelable); }}}
Egg.as
pakke com {import flash.display. *; //Dette vil være vår egendefinert hendelse så det vil forlenge Hendelses public class Egg strekker Hendelses {offentlig funksjon Egg () {//Her vil vi legge logikken for våre egg}}}
TweetHolder.as
pakke com {import flash.display. *; //Dette vil være vår egendefinert hendelse så det vil forlenge Hendelses public class TweetHolder strekker Hendelses {offentlig funksjon TweetHolder () {//Her vil vi legge logikken for vår TweetHolder}}}
Trinn 3: Ordne Meny
Det er på tide å starte moroa! Legg alle våre meny eiendeler, plasserer nytt spill knapp på scenen, opprette tittelen for spillet ditt, legge til instruksjonene samt instruksjoner knappen. Når du har alt på scenen tildele en forekomst navn til hvert av dem siden vi trenger å referere til dem i vår Hoved klasse
Trinn 4:. Forbered TweenLite
For dette opplæringen vi skal bruke TweenLite fra GreenSock som du kan laste ned HER (klikk AS3, laste ned ZIP-filen inneholder den, så pakk det og kopiere filen heter greensock.swc til mappen hvor du har din FLA-fil).
< p> Når du har SWC-fil rett ved siden av din FLA vi trenger å koble den til vår FLA så klikker du på Rediger på Properties panel av filen:
Klikk deretter på Innstillinger rett ved siden av Actionscript 3.0, deretter +, og skriv "./greensock.swc"
Etter det er vi klare til å begynne å jobbe i vår Hoved klasse
Trinn 5:. Viser instruksens
For å vise instruksjonene i spillet vi trenger å ha allerede opprettet et filmklipp som vil inneholde instruksjoner med forekomsten navnet instructions_content og knappen som vil innkalle den med forekomsten navnet instructions_btn. Foruten at vi vil ta seg tid til å gjøre alt fungerer som en knapp.
Vi vil bruke bare én funksjon for å gjøre instruksjonene vise og skjule, så vi trenger en variabel som vil fortelle oss om instruksjonene er allerede å være vises; vi vil kalle det variable showingInstructions
pakke com {//importere det vi trenger for å animere objekter importere com.greensock.TweenLite.; importere com.greensock.easing. *; importere flash.display. *; import flash.events. *; public class Hoved strekker MovieClip {//variabel som vi vil bruke til å vite om instruksjonene blir vist //satt til false siden den første posisjonen til instruksjonene vil være ute av ramme private Var showingInstructions: Boolean = false; offentlig funksjon main () {this.addEventListener (Event.ADDED, init); } Private funksjon init (e: Hendelses): void {this.removeEventListener (Event.ADDED, init); //Satt objekter fungerer som knapp og få pekeren hånd instructions_btn.buttonMode = true; instructions_content.close_btn.buttonMode = true; //Vil vi kaller funksjonen instructionsHandler når instructions_btn.addEventListener (MouseEvent.CLICK, instructionsHandler); instructions_content.close_btn.addEventListener (MouseEvent.CLICK, instructionsHandler); } Private funksjon instructionsHandler (e: MouseEvent): void {//vi spør om instruksjonene blir viste if (showingInstructions) {//hvis de er vi ønsker å sende dem ut av rammen og fortelle spillet som ikke blir vist TweenLite.to (instructions_content, 0,4, {y: 600, letthet: Cubic.easeIn}); showingInstructions = false; } Else {//hvis det ikke da vi vil animere det inn scenen og fortelle at det blir viste TweenLite.to (instructions_content, 0,4, {y: 364, letthet: Cubic.easeOut}); showingInstructions = true; }}}}
Trinn 6: Følg meg Button
Siden du er en utvikler og du vil kanskje brukerne å komme i kontakt med deg et "følg meg" -knappen høres ut som en god idé - så la oss gjøre knapp sende brukerne til din twitter profil; Vi vil gjøre dette ved slik:
privat funksjon init (e: Hendelses): void {this.removeEventListener (Event.ADDED init,); //Satt objekter fungerer som knapp og få pekeren hånd instructions_btn.buttonMode = true; followMe_btn.buttonMode = true; instructions_content.close_btn.buttonMode = true; //Vil vi kaller funksjonen instructionsHandler når instructions_btn.addEventListener (MouseEvent.CLICK, instructionsHandler); instructions_content.close_btn.addEventListener (MouseEvent.CLICK, instructionsHandler); followMe_btn.addEventListener (MouseEvent.CLICK, followMeHandler);}
Det vi trenger for å lage vår handler som vil bli kalt followMeHandler som vi skrev da vi erklærte lytteren:
//denne funksjonen vil motta en MouseEvent objekt som vi vil kalle "e" privat funksjon followMeHandler (e: MouseEvent): void {//Du må endre jscamposcr for brukernavnet, vil twitter ta seg av resten navigateToURL (ny URLRequest ("http: //www.twitter. com /jscamposcr ")," _blank ");}
Trinn 7: Klargjør Stage for et nytt spill
Når du har din meny, instruksjonene og" følg meg "-knappen arbeids det er på tide å få hendene skitne og starte hardt arbeid - men først må vi forberede området med de rette stedene for å starte spillet. Dette vil vi gjøre det ved å flytte ut alle objekter av menyen, inkludert instruksjonene.
Først la oss legge til et klikk lytteren til New Game-knappen som vi har i vår scene, og så la oss lage en funksjon som vil rydde opp scenen
privat funksjon init (e: Hendelses):. void {this.removeEventListener (Event.ADDED init,); //Satt opp lyttere, stillinger, synlighet, etc newGame_btn.buttonMode = true; instructions_btn.buttonMode = true; followMe_btn.buttonMode = true; menu_btn.buttonMode = true; instructions_content.close_btn.buttonMode = true; newGame_btn.addEventListener (MouseEvent.CLICK, startGame); instructions_btn.addEventListener (MouseEvent.CLICK, instructionsHandler); instructions_content.close_btn.addEventListener (MouseEvent.CLICK, instructionsHandler); followMe_btn.addEventListener (MouseEvent.CLICK, followMeHandler);}
Neste vi vil ta alle våre gjenstander ut av scenen i funksjonen startGame
privat funksjon startGame (e: * = null): void {TweenLite.to ( newGame_btn, 0,3, {x: -200, letthet: Quad.easeIn}); TweenLite.to (instructions_btn, 0,3, {x: 500, letthet: Quad.easeIn}); TweenLite.to (followMe_btn, 0,3, {y: 650, lette: Quad.easeIn}); //Vi må gjemme instruksjonene hvis de blir desplayed if (showingInstructions) {TweenLite.to (instructions_content, 0,3, {y: 600, letthet: Quad.easeIn}); showingInstructions = false; }}
Nå må vi legge til en meny-knapp og en poengsum tekstfelt, vil vi ringe på menyknappen menu_btn og poengene vil bli kalt score_text og det vil være et dynamisk tekstfelt. Ikke glem å legge ned skriften; for dette vil jeg legge Verdana Bold ved å klikke på Bygg og legge karakterene vi trenger.
Deretter legger begge gjenstander på toppen av scenen, men ut av det siden vi ikke trenger dem i vår første bildet, deretter Vi vil legge til to linjer som vil animere både av dem på vår startGame funksjon:
privat funksjon startGame (e: * = null): void {TweenLite.to (newGame_btn, 0,3, {x: -200, letthet: Quad .easeIn}); TweenLite.to (instructions_btn, 0,3, {x: 500, letthet: Quad.easeIn}); TweenLite.to (followMe_btn, 0,3, {y: 650, lette: Quad.easeIn}); TweenLite.to (menu_btn, 0,3, {y: 0, delay: 0,2, lette: Quad.easeOut}); TweenLite.to (score_text, 0,3, {y: 10, delay: 0,2, lette: Quad.easeOut}); if (showingInstructions) {TweenLite.to (instructions_content, 0,3, {y: 600, letthet: Quad.easeIn}); showingInstructions = false; }}
La oss nå gi brukeren muligheten til å gå tilbake til menyen ved å legge til en funksjon på menyknappen som vi nettopp har lagt; vi vil kalle dette en GoToMenu og vi vil kalle det når brukeren klikker på menu_btn. For det, vil vi legge til en hendelse lytteren i vår start spillet funksjon:
privat funksjon startGame (e: * = null): void {TweenLite.to (newGame_btn, 0,3, {x: -200, letthet: Quad. easeIn}); TweenLite.to (instructions_btn, 0,3, {x: 500, letthet: Quad.easeIn}); TweenLite.to (followMe_btn, 0,3, {y: 650, lette: Quad.easeIn}); menu_btn.buttonMode = true; menu_btn.addEventListener (MouseEvent.CLICK, GoToMenu); TweenLite.to (menu_btn, 0,3, {y: 0, delay: 0,2, lette: Quad.easeOut}); TweenLite.to (score_text, 0,3, {y: 10, delay: 0,2, lette: Quad.easeOut}); if (showingInstructions) {TweenLite.to (instructions_content, 0,3, {y: 600, letthet: Quad.easeIn}); showingInstructions = false; }}
Nå er funksjonen som vil gjøre ting kommer tilbake:
privat funksjon GoToMenu (e: MouseEvent): void {//vi deaktivere tilfelle lytteren menu_btn.removeEventListener (MouseEvent.CLICK, GoToMenu); //Vi flytte tilbake alle våre eiendeler TweenLite.to (tittel, 0,3, {y: 91, delay: 0,2, letthet: Quad.easeOut}); TweenLite.to (newGame_btn, 0,3, {x: 162, delay: 0,2, letthet: Quad.easeOut}); TweenLite.to (instructions_btn, 0,3, {x: 162, delay: 0,2, lette: Quad.easeOut}); TweenLite.to (followMe_btn, 0,3, {y: 500, delay: 0,2, letthet: Quad.easeOut}); TweenLite.to (menu_btn, 0,3, {y: -35, letthet: Quad.easeIn}); TweenLite.to (score_text, 0,3, {y: -30, letthet: Quad.easeIn});}
Så langt i prosjektet skal se slik ut:
Vi fikk faktisk fjerne tittelen; vi vil la den være der mens vi vise en melding som sier at tweets blir lastet
Trinn 8:. opprette de nødvendige Hendelser
Vi er nesten klar til å starte vår spillmotor , men som en del av det vi trenger for å kunne kommunisere med våre viktigste klassen. Vi vil gjøre dette med arrangementer, så la oss ta vår GameEvent og legge den type hendelser som vi ønsker å lytte til:
Når spillet er slutt. GAME_ENDED
Når poengsum har endret seg: SCORE_CHANGE
Når Tweets som vi laster er klare til bruk.. TWEETS_READY
Når Tweets ikke kunne lastes. TWEETS_ERROR
Så med alt som sorteres nå vi trenger å redigere vår GameEvent klasse
pakke com {import flash.events. *; public class GameEvent strekker Hendelses {public static konst GAME_ENDED: String = "Game Ended"; public static konst SCORE_CHANGE: String = "Resultat Change"; public static konst TWEETS_READY: String = "Tweets Ready"; public static konst TWEETS_ERROR: String = "Tweets Error"; offentlige Var parametre: String; offentlig funksjon GameEvent (type: String = "Standard", params: String = null, bobler: Boolean = false, kansellerbare: Boolean = false) {super (type, bobler, cancelable); parametere = params; }}}
Med vår meny og hendelser opprettet vi er endelig klar til å starte vår spillmotor
Trinn 9: Sette opp et spill Instance
For å få spillet vårt fungerer som den skal vi trenger på å bruke den, legge hendelses lyttere og ødelegge dem når det ikke lenger nødvendig; for det vil vi legge til kode til startGame funksjon, GoToMenu funksjon, og en ny funksjon vi vil opprettet kalt Endgame (dette vil drepe spillet vårt eksempel og fjerne hendelsen lyttere).
Først la oss endre vår "Start spill" funksjon; vi vil legge de neste linjene til slutten av slutten av startGame funksjon
spillet = new Game ();. game.addEventListener (GameEvent.GAME_ENDED, Endgame), game.addEventListener (GameEvent.SCORE_CHANGE, changeScore); spill .addEventListener (GameEvent.TWEETS_READY, addGame); game.addEventListener (GameEvent.TWEETS_ERROR, Errorhandler);
Siden vi bruker en VAR kalt spillet vi må erklære det i begynnelsen av klassen vår som et privat var:
privat Div spill: Spill;
I vår GoToMenu funksjonen vil vi legge til en oppfordring til vår endgame funksjon som vi vil skape og legge til følgende kode:
privat funksjon Endgame (e: GameEvent = null): void { //Dette vil tilbakestille score i tilfelle brukeren starter et nytt spill score_text.text = "Score: 0"; //Dette vil drepe spillet vårt med funksjonen killGame at vi vil skape inne spillet vårt klasse game.killGame (); //Vi vil fjerne alle våre lyttere fra spillet vårt eksempel game.removeEventListener (GameEvent.GAME_ENDED, Endgame); game.removeEventListener (GameEvent.SCORE_CHANGE, changeScore); game.removeEventListener (GameEvent.TWEETS_READY, addGame); game.removeEventListener (GameEvent.TWEETS_ERROR, Errorhandler); //Hvis har blitt lagt i spillet da vi vil visne det ut, og da vil vi fjerne det fra scenen og minnet om (game.addedToStage) {TweenLite.to (spill, 0,4, {alfa: 0, onComplete: (funksjon ( ) {game.parent.removeChild (spill), spill = null})}); } //Hvis ikke så vil vi bare drepe den else {spillet = null; }}
Med dette vil vi være godt å gå og arbeide på vår Spill klasse
Trinn 10: Legge tweets
Først må vi erklære noen variabler som vi vil bruke senere:
//Dette vil holde informasjon om våre Tweets etter at de er loadedprivate Var goldenEggsData: Object; private Var crackedEggsData: Object; //Dette vil holde vår eggsprivate Var goldenEggsArray: Array = new Array (); privat Var crackedEggsArray: Array = new Array (); //Antallet egg som har vært usedprivate Var goldenEggsCount: int = 0; privat Var crackedEggsCount: int = 0; //Hastigheten på eggene mens de fallprivate Var hastighet: int = 4; //Dette er den nest som vi vil bruke til å fange eggsprivate Var nest: Nest = new Nest (); //Dette vil holde eggene som er på stageprivate Var egg: Array = new Array (); //Dette vil holde tweets som blir displayedprivate Var tweetsOnScreen: Array = new Array (); //This de er selv explainedprivate Var bedømmelsen: Antall = 0; privat Var Vanskelighetsgrad: Number = 3; privat Var endte: Boolean = false; //Dette vil fortelle om nøkkelen blir holdedprivate Var rightKey: Boolean = false; privat Var leftKey: Boolean = false; //MovieClip fra libraryprivate Var tweetsBar: TweetsBar = new TweetsBar (); //Dette sier om spillet har vært lagt til stagepublic Var addedToStage: Boolean = false;
Så vi trenger å fortelle brukeren hva som skjer så vil vi legge til et filmklipp til scenen og endre navn til loadingTweets; dette sier at tweets blir lastet. Vi vil visne den i løpet av vår startGame fra vår hovedklassen
privat funksjon startGame (e: MouseEvent): void {loadingTweets.x = 130; loadingTweets.y = 230; loadingTweets.alpha = 0; TweenLite.to (newGame_btn, 0,3, {x: -200, lette: Quad.easeIn}); TweenLite.to (instructions_btn, 0,3, {x: 500, letthet: Quad.easeIn}); TweenLite.to (followMe_btn, 0,3, {y: 650, lette: Quad.easeIn}); TweenLite.to (loadingTweets, .3, {alfa: 1, delay: 0,2}); menu_btn.buttonMode = true; menu_btn.addEventListener (MouseEvent.CLICK, GoToMenu); TweenLite.to (menu_btn, 0,3, {y: 0, delay: 0,2, lette: Quad.easeOut}); TweenLite.to (score_text, 0,3, {y: 10, delay: 0,2, lette: Quad.easeOut}); if (showingInstructions) {TweenLite.to (instructions_content, 0,3, {y: 600, letthet: Quad.easeIn}); showingInstructions = false; } Spillet = new Game (); game.addEventListener (GameEvent.GAME_ENDED, Endgame); game.addEventListener (GameEvent.SCORE_CHANGE, changeScore); game.addEventListener (GameEvent.TWEETS_READY, addGame); game.addEventListener (GameEvent.TWEETS_ERROR, Errorhandler);}
Og vi vil visne det ut i vår Endgame funksjon:
privat funksjon Endgame (e: GameEvent = null): void {score_text.text = "Score: 0 "; game.killGame (); game.removeEventListener (GameEvent.GAME_ENDED, Endgame); game.removeEventListener (GameEvent.SCORE_CHANGE, changeScore); game.removeEventListener (GameEvent.TWEETS_READY, addGame); game.removeEventListener (GameEvent.TWEETS_ERROR, Errorhandler); if (game.addedToStage) {TweenLite.to (spill, 0,4, {alfa: 0, onComplete: (function () {game.parent.removeChild (spill), spill = null})}); } Else {spillet = null; loadingTweets.alpha = 0; loadingTweets.x = 800; loadingTweets.y = 2300; }}
Det er nå på tide å starte moroa og lage selve spillet! For at vi vil trenge Tweets. Hovedideen med denne opplæringen er å laste Tweets, og vi vil bruke søke API fra Twitter til å gjøre dette.
Jeg anbefaler deg å gå og sjekke det ut, men for dette spillet vil vi bare bruke noen av de mulige alternativer; vi vil gjøre to forespørsler og deretter legge spillet til scenen, det er derfor vi ikke legge den da den ble opprettet, vil vi først laste Tweets for den gylne egg i spillet vårt funksjon, og vi vil legge til en hendelse lytteren når det er lagt, hvor vi starter spillet:
offentlig funksjon Game () {//tweets loader Var loader: URLLoader = new URLLoader (); loader.addEventListener (Event.COMPLETE, loadCrackedEggs); loader.addEventListener (IOErrorEvent.IO_ERROR, Errorhandler); //Konstruere URL q = hva vi er ute etter RPP = mengden tweets som vi ønsker //Hvis du skal bruke komplekse streng i webadressen sørg for å bruke funksjonen encodeURI ("Your String") og deretter legge det til URL Var url: String = "http://search.twitter.com/search.json?lang=en&q=golden%20eggs&rpp=50"; loader.load (ny URLRequest (url)); this.addEventListener (Event.ADDED, init);}
For denne forespørselen brukte vi bare lang som er språket for Tweets som vi ønsker å motta gitt i en ISO 639-1-kode; q som er det viktigste ordet (kan være en setning i tillegg - bare sørg for å kode URL) vi er ute etter; og RPP som er antall Tweets som vi ønsker å motta. Hvis du ønsker å søke etter mer enn én ting du kan bruke OR, fortsatt fungerer det helt fint, men er ikke i den nye dokumentasjonen siden så jeg ikke kan fortelle om eller de kommer til å slutte å støtte det (det samme for ikke som blir hendig når du får for mange spam tweets).
For enda mer informasjon om dette gå til "ved hjelp av søkeordet" side fra Twitter.
Når våre Tweets for gullegg er lastet vi vil laste Tweets for "sprukne egg" i funksjons loadCrackedEggs og da vil vi sende en hendelse som sier at alt er klart for spillet til å starte:
private funksjons loadCrackedEggs (e: Hendelses): void {//Vi vil erklære denne variabelen som en privat variabel slik at vi kan lagre dataene her goldenEggsData = JSON.decode (e.currentTarget.data); //Tweets loader Var loader: URLLoader = new URLLoader (); loader.addEventListener (Event.COMPLETE, startGame); loader.addEventListener (IOErrorEvent.IO_ERROR, Errorhandler); //Konstruere URL-ORS = hva vi er ute etter RPP = mengden tweets som vi ønsker Var url: String = "http://search.twitter.com/search.json?q=cracked%20eggs&lang=en& RPP = 50 "; loader.load (ny URLRequest (url));}
Når vi legger JSON vil vi konvertere den til et objekt variabel som vi vil erklære i begynnelsen av koden vår - for å forstå en JSON Jeg anbefaler at du leser Forståelse JSON - å konvertere den til et objekt vi vil bruke as3corelib fra Mike Chambers og dens funksjon JSON.decode, som vil returnere et objekt med alle innholdet i JSON-fil
Trinn 11:. Starte spillet vårt
For å starte vi vil skape to arrays som vil inneholde egg informasjon og for at vi vil trenge vår klasse Egg som vi opprettet i trinn 2; i den klassen vil vi lagre noen data og legge til grafikk for våre egg. For å legge til grafikken må vi eksportere grafikk for eggene fra biblioteket for å bruke dem i vår kode som dette:
Da vil vi trenger å jobbe i klassen vår:
pakke com {import flash .utstilling.*; import flash.events. *; public class Egg strekker Sprite {//Her vil vi lagrer hva slags egg dette er så riktig grafisk brukes offentlig Var Type: String; //Stores strengen teksten offentlige Var tweet: String; //Lagrer brukernavnet til forfatteren av tweet offentlig Var user: String; //Lagrer URL av avataren til brukeren offentlig Var userImg: String; offentlig funksjon Egg () {this.addEventListener (Event.ADDED, init); } Private funksjon init (e: Hendelses): void {this.removeEventListener (Event.ADDED, init); //Her legger vi den grafiske tilsvarer den type egg //Vi bruker movieclips at vi eksporterte i vårt bibliotek hvis (type == «Golden Egg") {var Goldenegg: Goldenegg = new Goldenegg (); addChild (Goldenegg); } Else {var crackedEgg: CrackedEgg = new CrackedEgg (); addChild (crackedEgg); }}}}
Dette er alt som vi vil gjøre vårt Egg klasse.
Nå vil vi jobbe i vår startGame funksjon. Her vil vi gå gjennom objektet som inneholder informasjon om våre Tweets, deretter for hver tweet at vi lastet vi vil skape et egg, gi den nødvendige informasjonen, og deretter legge den til en matrise slik at vi kan bruke det senere.
privat funksjon startGame (e: Hendelses): void {crackedEggsData = JSON.decode (e.currentTarget.data); for (var i: int = 0; i < goldenEggsData.results.length; i ++) {var Goldenegg: Egg = new Egg (); goldenEgg.tweet = goldenEggsData.results [i] .text; goldenEgg.user = goldenEggsData.results [i] .from_user; goldenEgg.userImg = goldenEggsData.results [i] .profile_image_url; goldenEgg.type = «Golden Egg"; goldenEggsArray.push (Goldenegg); } For (var x: int = 0; x < crackedEggsData.results.length; x ++) {var crackedEgg: Egg = new Egg (); crackedEgg.tweet = crackedEggsData.results [x] .text; crackedEgg.user = crackedEggsData.results [x] .from_user; crackedEgg.userImg = crackedEggsData.results [x] .profile_image_url; crackedEgg.type = "Cracked Egg"; crackedEggsArray.push (crackedEgg); } DispatchEvent (ny GameEvent (GameEvent.TWEETS_READY));}
Trinn 12: Feilhåndtering
Det kan skje at Tweets ikke kan lastes, så det er lurt å gjøre noe med og ikke bare la det skje, det er derfor hver gang vi lastet Tweets vi lagt til en IOErrorEvent lytteren, satt til å kalle en funksjon som heter Errorhandler. Denne funksjonen vil bare sende en feil hendelse så vår viktigste klassen kan håndtere det:
privat funksjon Errorhandler (e: IOErrorEvent): void {dispatchEvent (ny GameEvent (GameEvent.TWEETS_ERROR));}
Så i vår FLA vi vil legge til en ny ramme til vår loadingTweets filmklippet, der du kan legge inn meldingen for brukeren å vite at noe gikk galt og flytte til en annen ramme, slik at den ikke viser hva det ikke skal. Vi vil vise at i Errorhandler klasse som vi satt opp som lytter for TWEET_ERRORs
privat funksjon Errorhandler (e: GameEvent): void {loadingTweets.gotoAndStop (2);}
Trinn 13:. Initial Vår Spill
Når Tweets er klare vi kan initialisere det; for dette vil vi skape vår addGame funksjon i vår hovedklassen, og i denne funksjonen vil vi legge til spillet vårt til scenen slik at init-funksjonen på vår Spill klasse blir utløst, vil vi animere ut vår tittel, og vi vil bevege seg bort animasjonen vi hadde for brukeren å vite at Tweets ble lastet
privat funksjon addGame (e: Hendelses):. void {addChild (spill); TweenLite.to (tittel, 0,3, {y: -200, letthet: Quad.easeIn}); loadingTweets.alpha = 0; loadingTweets.x = 800; loadingTweets.y = 2300;}
Så i vårt init funksjonen til Game klassen vil vi lage vår første fuglen, og legge et reir (som spilleren vil bruke til å fange eggene) og en svart strek (som vil holde Tweets som brukeren har catched) - så la oss lage disse filmklipp
Vår nest må ha grafikk og en usynlig filmklipp som vi vil bruke til å teste kollisjoner med egg;. den sorte linjen trenger bare en grunnleggende tittel. Vi trenger å eksportere dem begge for AS bruk
privat funksjon init (e: Hendelses):. Void {this.removeEventListener (Event.ADDED, init); //Vi setter vår varible til sann så vår viktigste klassen vet om det har blitt lagt til eller ikke addedToStage = true; //Sett opp stillingen, alfa og animasjon for vår nest objekt nest.x = 10; nest.y = 497; nest.alpha = 0; TweenLite.to (reir, 0,5, {alfa: 1}); addChild (nest); //Legg til, posisjon og anomation for Tweets bar tweetsBar.x = 350; tweetsBar.alpha = 0; TweenLite.to (tweetsBar, 0,6, {alfa: 1}); addChild (tweetsBar); //Dette er vårt viktigste løkke som vil ta vare på vårt spill og fortelle hva som skjer stage.addEventListener (Event.ENTER_FRAME, updateGame); //Vi skal flytte vår nest via tastene slik at vi må lytte til keyboards hendelser stage.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler); stage.addEventListener (KeyboardEvent.KEY_UP, keyUpHandler); //Vi skal lage vår første fuglen som er i begynnelsen av selve spillet createBird (); //For å gjøre dette spillet litt interessant vil vi endre dificulty av spillet vårt som brukeren spiller det TweenLite.delayedCall (10, changeDifficulty);}
Med denne klare vil vi nå må jobbe med våre fugler, våre egg Våre Tweets og hoved løkke for dette spillet
Trinn 14:. Opprette Våre Birds
Våre fugler vil slippe våre egg så de er litt viktig! Så la oss lage dem og animere dem. I vår createBird funksjonen vil vi skape en fugl, animere det, og bestemme når den neste fuglen vil bli opprettet; i tillegg til at vi vil sette opp hastigheten på fugl (for å gi litt variasjon i vanskelighetsgraden de vil bevege seg raskere etter hvert som spillet går videre)
privat funksjon createBird (). void {//Opprett en ny Bird eksempel fra ut bibliotek Var fugl: Bird = new Bird (); //Dette er tiden som skal gå før egget slippes Var tid: Number = (Math.random () * 1,3) + 5;. //Vi vil posisjonere ut fuglen ut av scenen og i tilfeldig Y posisjon slik at de ser litt mer ekte bird.x = -100; bird.y = (Math.random () * 60) + 50; //Animerer fuglen og ødelegger det etter at det er gjort animere TweenLite.to (fugl, 5, {x: 600, onComplete: killObject, onCompleteParams: [bird]}); addChild (fugl); if (avsluttet!) {//Vi må fortelle vår fugl å slippe våre egg etter en certian tid som vil være tilfeldig TweenLite.delayedCall (tid, releaseEgg, [bird]); //Hvis spillet har ingen endte vi trenger for å lage en ny fugl og avhengig av vanskelighetsgrad vil den komme raskere TweenLite.delayedCall (Math.random () * vanskelighetsgrad, createBird); } Else {//Siden spillet er avsluttet vi ikke trenger oppdateringer stage.removeEventListener (Event.ENTER_FRAME, updateGame); //Hvis spillet er avsluttet vil vi ikke ha noen egg til å bli utgitt, så vi kaller noen samtaler til den funksjonen TweenLite.killTweensOf (releaseEgg); //I tillegg til ikke å la noen egg kommer vil vi slette alle eggene if (eggs.length > 0) {for (var i: int = 0; i < eggs.length; i) {killObject (egg [i]); eggs.shift (); }} //Vi skal animere ut vår nest siden ingen flere egg vil bli forkjølet TweenLite.to (reir, 0,6, {y: 700}); //Vi vil vise score og gi brukeren muligheten til å Tweet it showTweetScore (); }}
Trinn 15: Releasing Eggs
Nå som vi har fugler som flyr rundt vi trenger dem til å slippe egg, så i vår releaseEgg funksjon vi vil gjøre det:
privat funksjon releaseEgg ( b: Bird): void {var r: Number = Math.random (); Var egg: Egg; //Her velger vi om våre egg vil være en gyllen egg eller en sprukket egg, noe som gir en litt større sjanse til å få et gullegg if (r > 0,45) {//Hvis brukeren får et gullegg da må vi tildele ett egg danne vår rekke gylne egg og oppdatere tellingen egg = goldenEggsArray [goldenEggsCount]; goldenEggsCount ++; } Else {//Hvis brukeren får en sprukket egg så vi trenger å tildele ett egg danne vår rekke sprukne egg og oppdatere tellingen egg = crackedEggsArray [crackedEggsCount]; crackedEggsCount ++; } //Da vil vi tildele plasseringen av fuglen som kommer til å slippe den egg.x = bx; egg.y = b.y; //Så vi legger det å iscenesette og skyv den til vår egg matrise slik at det blir oppdatert addChild (egg); eggs.push (egg);}
Trinn 16: Endre Vanskelighetsgrad
Over tid vanskelig vil endre seg; vi allerede gjort et kall for at det skal skje i vår init funksjon, så nå vil vi gjøre det skje:
privat funksjon changeDifficulty (): void {//Den første vanskeligheten er satt til 3, slik at denne funksjonen kalles vi vil endre det slik at flere fugler kommer sammen og fremskynde eggene hvis (vanskeligheter == 3) {vanskelighetsgrad = 2; speed = 5; //Vi kaller denne funksjonen igjen slik at vanskelighets chages igjen TweenLite.delayedCall (10, changeDifficulty); komme tilbake; } If (vanskeligheter == 2) {vanskelighetsgrad = 1,5; speed = 7; TweenLite.delayedCall (5, changeDifficulty); komme tilbake; komme tilbake; komme tilbake; import flash.events. *;