strømmen af begrænsede statslige maskiner: anvendelse og udvidelse

, strømmen af begrænsede statslige maskiner: anvendelse og udvidelse,,,,, andel,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' ikke glip af, her er den sidste del af vores forelæsning om at skabe en multi - stat bil med en, begrænsede statslige maskine.i denne del, vil du se, hvor let det er at føje flere lande samt nye elementer til bilen.når du er færdig, vil du vide, hvordan struktur kontrol for din mfs' s formål, som vil blive påvist, når vi tilføje, animation og forsvarlig.,,, endelige resultat forpremiere, tjek det endelige resultat, vi vil arbejde hen imod:,, trin 1: at fortsætte, hvor vi slap - yderligere stater, her er statens overgang tabel (eag) har vi i første del af den tutor:,, når du har brug for at tilføje flere stater, altid starte med din eag.her er de nye medlemsstater, vil vi arbejde hen imod, med mulighed for at tilføje nye aktioner, som er krævet:,, prøve at lægge i de rigtige foranstaltninger for nyligt tilføjede stater. jeg går ud fra, det er længe siden, du har læst den første del af denne forelæsning, så tag din tid.når du er færdig, sammenligne din eag med det image, som vist nedenfor.,, trin 2: retouchering den istate grænseflade, den næste ting du skal gøre, er at tilføje to nye statslige foranstaltninger til din istate grænseflade, åben istate.as i fd og omfatter kodeksen nedenfor.jeg vil gerne tilføje det lige efter, driveforward() metode., funktion drivebackward (): ugyldig; funktion drivereallyfast (): ugyldig, løb nu anvendelse og se, hvad der sker.,, enhver ændring af den istate inteface skal afspejles i alle klasser, at gennemføre det.dette er den store fordel ved at bruge en grænseflade, jeg kan virkelig godt lide, hvordan det minder dig om at tilføje dem for hvert eksisterende statslige klasse. tilsættes følgende kode til alle de eksisterende statslige klasser.læg den under, driveforward() metode.lad os få dem til at kalde, trykte (+ "gælder aktion"), for at minde os om, at vi er nødt til at komme tilbage til dem, efter at de to andre statslige klasser. offentlige funktion drivebackward (): ugyldig (_car.print (+ "gælder foranstaltninger");} offentlig funktion drivereallyfast ():. (_car.print (+ "gælder foranstaltninger");}, du burde ikke få mere fejl, når du løber anvendelse igen.,, trin 3: at skabe to - stats - klasser, åbne bilen klasse, sejle til, initializestates(), metode og tilføje den kode nedenfor., _enginedrivebackwardstate = nye enginedrivebackward (det); _enginedrivereallyfaststate = nye enginedrivereallyfast (det), hverken variabler eller klasser eksisterer, men vi ordner det.først kommer ind i "enginedrivebackward", så tryk ctrl + forskydning + 1 "fremhæve" skabe nye klasse "tryk" enter ".,, sørg for at matche alle oplysningerne ovenfor, før du klik" okay ".du skal have noget svarende til kode nedenfor.glem ikke at tilføje, _car, variable før konstruktøren og tilføje, at "$" symbol for denne parameter.så gør opgaven i konstruktøren., pakke com.activetuts.fsm {offentlige klasse enginedrivebackward gennemfører istate (private var _car: bil, offentlig funktion enginedrivebackward ($bil: bil) (_car = $bil;} /* grænseflade com.activetuts.fsm.istate * /offentlige funktion turnkeyoff(): tomrum {} offentlig funktion turnkeyon(): tomrum {} offentlig funktion driveforward(): ugyldig {} offentlig funktion drivebackward(): tomrum {} offentlig funktion drivereallyfast(): tomrum {} offentlig funktion refuel(): tomrum {} offentlige funktion ajourføring ($tik: antal) ugyldig (} offentlig funktion tostring(): string (}}}, okay.gå tilbage til bilen, klasse, hvor vi slap, og læg din markør i, _enginedrivebackwardstate, variable og tryk ctrl + forskydning + 1 "vælger" private variabel ", så tryk på" enter ".det vil sige det som den sidste, før den pågældende variabel.ændring af typen "istate".jeg vil flytte den til, hvor den anden medlemsstat variabler er, men det er valgfrit, efter samme procedure for at skabe det, enginedrivereallyfast, klasse. du tager fejl, hvis du løber den ansøgning om, tostring(), metode for de to nye klasser ikke tilbage til en værdi. den skal også give ekstern adgang til kontrol for de to nye aktioner.tilføje kode nedenfor efter, driveforward() metode. offentlige funktion drivebackward e: begivenhed = null): ugyldig (_currentstate.drivebackward ();} offentlig funktion drivereallyfast e: begivenhed = null): ugyldig (_currentstate.drivereallyfast ();} endelig tilføje udtrykkeligt getters i den nederste del af din bil klasse - over, changestate() metode. offentlige funktion getenginedrivebackwardstate (): istate {tilbage _enginedrivebackwardstate;} offentlig funktion getenginedrivereallyfaststate (): istate {tilbage _enginedrivereallyfaststate;}, trin 4: enginedrivebackward stat, vende tilbage til din eag og begynde at tilføje kode fra toppen af istate metode resulterer i.du vil løbe ind i et problem, et eller andet sted, men gør det alligevel.du kan også bruge deres egne ord for, print() metode.når du er færdig, sammenligne din kode med klasse opførelse på listen nedenfor, pakke com.activetuts.fsm {offentlige klasse enginedrivebackward gennemfører istate (private var _car: bil, offentlig funktion enginedrivebackward ($bil: bil) (_car = $bil;} /* grænseflade com.activetuts.fsm.istate * /offentlige funktion turnkeyoff (): ugyldig (_car.print ("klik.rullende til et stop i bakgear, motoren er slukket. ") _car.changestate (_car.getengineoffstate ()} offentlig funktion turnkeyon (): ugyldig (_car.print (" du kører baglæns, ingen grund til at dreje tændingslåsen! ");) offentlig funktion driveforward (): ugyldig (_car.print ("klik, skift fra omvendt til at køre..."); _car.changestate (_car.getenginedriveforwardstate ()} offentlig funktion drivebackward (): ugyldig (_car.print ("allerede kører baglæns.");} offentlig funktion drivereallyfast (): ugyldig (_car.print ("klik, gearskift fra omvendt til turbo!! "); _car.changestate (_car.getenginedrivereallyfaststate ()} offentlige funktion tanke (): ugyldig (hvis (_car.hasfulltank () = = falske) (_car.print ("stop bilen fra at køre i bakgear, gearskift, at parkere, dreje nøglen til slukket stilling, stiger ud af bilen og tilføjelse af" + antal (_car.refillwithfuel ()). tofixed (2) + "liter (er) af brændstof.") _car.changestate (_car.getengineoffstate ()) offentlig funktion ajourføring ($tik: antal) ugyldig (_car.enginetimer + = $tik; hvis (_car.enginetimer > = bil. one_sixth_seconds) (_car.enginetimer - = car.one_sixth_seconds; _car.consumefuel (bil. reverse_fuel_consumption); ///////////////25 sekunder gasforsyning}}offentlig funktion tostring (): string (tilbage "køre baglæns"}}}, update(), metode kræver en yderligere grund til bilen.din markør i, reverse_fuel_consumption, tryk "ctrl + skifte + 1" vælger "konstant", så tryk på "enter".det er konstant på toppen af bilen klasse med misligholdelse type snor.ændre sin type, nummer og tildeler den en værdi af. 0066,.dette giver 25 sekunder kører baglæns med fuld tank, en liter.du kan flytte den, for at være sammen med de andre brændstofforbrug konstanter, mens du er der, så du kan lige så godt tilføje, turbo_fuel_consumption, konstant med værdien af. 016 (10 sekunder i turbo for en liter).vi vil bruge det senere for, enginedrivereallyfast, klasse. så enkelt er det.gå videre og afslutte det, enginedrivereallyfast, klasse.hvis du bliver fanget, gå tilbage og se til din eag.eller du kan bare åbne den udfyldte klasse i "statepatternpartial2" mappe indeholdt med kilde, downloade og se, hvad du gik glip af.,, løntrin 5: flere test, tilføje nye statslige foranstaltninger (, _car. drivebackward(), og _car. drivereallyfast() i testen dele i deres "store" klasse, så løb den app., tjek din udskrift af testen aktioner, hvis de stemmer., meddelelse, hvor der står "af anvende foranstaltninger her"?det fortæller os, at vi har glemt at komme tilbage og tilføje opførsel for nyligt tilføjede bil funktioner i den anden stat klasser.gå tilbage til hver af dem og anvende adfærd baseret på din eag., app skal køre perfekt nu.hvis du vil, kan du stadig passer dit arbejde med klassificering indgår med kilden til download.som nævnt tidligere, er de i "statepatternpartial2" mappe.,, trin 6: forøgelse af medier aktiver med kilde downloade er en folder, der hedder "media", træk den ind i "bin" folder med din carfsm projekt.det indeholder alle de gode virkninger og grafik. næste, også med kilden download, vil du finde en folder, der hedder "kode", ind i den og ind i "statepatterncomplete" mappe.rør ikke ved noget, undtagen "medier. som" klasse.få det ind i dit "kom. activetuts. mfs" folder sammen med resten af klasser, du har gjort. det er vigtigt, at de ved, hvordan denne klasse arbejder, så du kan tilføje til det senere skulle du vælge at forsøge det hjemmearbejde, for at tilføje en anden bil funktionalitet, der vender tilbage til park.så gå over det mindst én gang, og jeg vil også forklare sit ansvar: det tager sig af alt, hvad medierne klogt, fra forankringen medier aktiver til at kontrollere dem.den første ting, det gør, er at integrere alle grafiske og lydfiler i "media" mappe.animation, visuelle produktion, og lyd er alle kontrolleres af statens forskellige klasser i bilen instans, som i går om, at medierne f.eks.når instantierede, denne klasse er fem ting - det giver sig selv som et barn i bilen, det skaber den bil er visuelle aktiver, lyder, knapper og visuelle produktion. lyder manipulation er normalt behandles med to funktioner, f.eks. når bilen kører, hvis du vælger "drive" radio - knap - bilen, ringer, playparktodrive(), som spiller lyden af bilen stadig større magt, så playpeakdrive(), når lyden kører med konstant hastighed er for gode.,, trin 7: forlængelse af den bil er ansvar - variabler, på toppen af den klasse, tilføje følgende kode efter, _currentstate, variable erklæring.disse egenskaber kom op som elementer blev føjet til den bil.for eksempel, jeg ville hente udstyret til at parkere efter en anden, når bilen er enten på eller ud af brændstof, så der er det.et andet eksempel er at rydde op i den visuelle produktion udviser efter 10 sekunder for at trykke en erklæring. offentlige statisk i denne one_second: int = 1; //plejede at omrokere redskaber til park, når af /ud af brændstof efter en anden menig static i denne ten_seconds: int = 10; //udløser rydde op for visuelle produktion private var _cleanuptimer: antal = 0; //visuelle produktion rent timer private var _angle: antal = 0; //for vognkassens animation, når motoren er parkeret private var _reallyfastrollspeed: antal = 63; //- hastighed, når den turbo private var _driverollspeed: antal = 35; //- hastighed, når drive private var _reverserollspeed: antal = - 15 //- hastighed, når den omvendte private var _currentrollspeed: antal = 0; //ændringer based på målet kører hurtigt se de sidste tre egenskaber ovenfor, anvendes til hjul rotation animation private var _carblureffect: sprite; //turbo hastighed slør indvirkning private var _media: media; //reference til medierne klasse for visuel /produktion /lyder manipulation, være sikker på, at tilføje, _media = nye medier (det), i den metode, init(), lige efter den metode, initializestates(),.,, trin 8: forlængelse af den bil er ansvar - bil funktioner, nu ind i den, update(), metode og ændre det, så det passer til den kode, der følger, offentlige funktion ajourføring ($tik: antal) ugyldig (_currentstate.update ($kryds); _media.settitle (_currentstate.tostring ()); hvis (_currentstate = = _engineoutoffuelstate



Previous:
Next Page: