Nesten alle spill der ute, bruker et scoring system for å hjelpe spillerne til å se deres fremgang. Det er viktig å vise spillerens score på en klar og morsom måte. I denne Quick Tip skal vi lære å gjøre nettopp det!
Klikk på knappen for å legge til 20.000 poeng til poengsummen din:
I denne Quick Tip kommer vi til å lære å lage en scoringsvisning. For å forbedre kvaliteten på skjermen, skal vi gjøre to ting:
Til slutt vil vi ha en veldig enkel og nyttig klasse, som du enkelt kan bruke innenfor noen av dine prosjekter.
Denne klassen vil bare omhandle seg med å vise poengsummen, ikke med å beregne den.
Først av, la oss lage vår klasse; Jeg har kalt den ScoreDisplay
:
pakke import flash.display.Sprite; offentlig klasse ScoreDisplay utvider Sprite offentlig funksjon ScoreDisplay ()
La oss sakte legge til noen variabler:
pakke import flash.display.Sprite; offentlig klasse ScoreDisplay utvider Sprite // poenget som blir vist, mens det øker offentlig var currentScore: uint; // spillerens poengsum, private var score: uint; offentlig funksjon ScoreDisplay ()
Vi skal vise poengsummen vår i a Tekstfelt
. Hvis du vil bruke et Symbol når du arbeider med ScoreDisplay
, Du trenger ikke å opprette tekstfeltet etter kode. Men hvis du ikke vil bruke et symbol, må du ringe createScoreField ()
.
Husk at hvis du vil bruke ditt eget Symbol, må du gi tekstfeltet i det symbolet forekomstnavnet til currentScoreField
.
pakke import flash.display.Sprite; importer flash.text.TextField; offentlig klasse ScoreDisplay utvider Sprite // tekstfeltet som vil vise currentScore public var currentScoreField: TextField; // poenget som blir vist, mens det øker offentlig var currentScore: uint; // spillerens poengsum, private var score: uint; offentlig funksjon ScoreDisplay () // hvis utvikleren ikke vil koble denne klassen til et symbol, må denne metoden kalles offentlig funksjon createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField);
La oss nå begynne å tenke på hva vi vil gjerne gjøre med vår ScoreDisplay
klasse. Vi ønsker å kunne sette en poengsum, samt legge til eller trekke fra spillerens poengsum. Så la oss lage disse metodene!
pakke import flash.display.Sprite; importer flash.text.TextField; offentlig klasse ScoreDisplay utvider Sprite // tekstfeltet som vil vise currentScore public var currentScoreField: TextField; // spillerens poengsum, private var score: uint; // poenget som blir vist, mens det øker private var currentScore: uint; offentlig funksjon ScoreDisplay () // hvis utvikleren ikke vil koble denne klassen til et symbol, må denne metoden kalles offentlig funksjon createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); offentlig funksjon setScore (_value: uint): void score = _value; offentlig funksjon changeScore (_change: uint): void score + = _change;
Så langt så bra, kan vi nå sette og endre poengets verdi. Men hvordan skal vi vise dette? Selv om det kanskje ikke synes å være veldig nyttig, bruker vi en innrammet rammehendelse lytter. Ikke bekymre deg for det vil være fornuftig!
pakke import flash.display.Sprite; importere flash.events.Event; importer flash.text.TextField; offentlig klasse ScoreDisplay utvider Sprite // tekstfeltet som vil vise currentScore public var currentScoreField: TextField; // spillerens poengsum, private var score: uint; // poenget som blir vist, mens det øker private var currentScore: uint; offentlig funksjon ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // hvis utvikleren ikke vil koble denne klassen til et symbol, må denne metoden kalles offentlig funksjon createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); offentlig funksjon setScore (_value: uint): void score = _value; offentlig funksjon changeScore (_change: uint): void score + = _change; privat funksjon showScore (event: Event): void currentScoreField.text = String (score);
Hvis vi ønsker å bruke vår klasse i et prosjekt, vil det se slik ut. Synes å fungere riktig - poenget endres - men vi er ikke ferdige. Husk hva vi ønsket å gjøre?
La oss starte med det første målet, legge til kommaer.
pakke import flash.display.Sprite; importere flash.events.Event; importer flash.text.TextField; offentlig klasse ScoreDisplay utvider Sprite // tekstfeltet som vil vise currentScore public var currentScoreField: TextField; // spillerens poengsum, private var score: uint; // poenget som blir vist, mens det øker private var currentScore: uint; offentlig funksjon ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // hvis utvikleren ikke vil koble denne klassen til et symbol, må denne metoden kalles offentlig funksjon createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); offentlig funksjon setScore (_value: uint): void score = _value; offentlig funksjon changeScore (_change: uint): void score + = _change; private funksjon showScore (event: Event): void currentScoreField.text = addCommas (score); privat funksjon addCommas (_score: uint): String // en streng, som vil ha poenget med kommaer var scoreString: String = new String (); // antall tegn våre poeng (uten kommaer) har var scoreLengde: uint = _score.toString (). lengde; scoreString = ""; // legg kommasene til strengen for (var jeg: uint = 0; i
Trinn 7: Overgang mellom poeng
La oss nå jobbe med vårt andre mål; overgang mellom scoreverdier, i stedet for å skifte til den nye verdien umiddelbart.
For dette kan vi bruke de fantastiske evnene til
Tween
klasse. De fleste ganger tenker vi på Tween-klassen for å flytte visningsobjekter, men du kan bruke den til å endre noen numerisk verdi, inkludert poengsummen.pakke import fl.transitions.Tween; importere fl.transitions.easing. *; importer flash.display.Sprite; importere flash.events.Event; importer flash.text.TextField; offentlig klasse ScoreDisplay utvider Sprite // hvor lang tid (i ms) som trengs for å overgå fra en poengsum til en annen en privat statisk const TRANSITION_LENGTH: uint = 500; // poenget som blir vist, mens det øker offentlig var currentScore: uint; // spillerens poengsum, private var score: uint; // tekstfeltet som vil vise currentScore private var currentScoreField: TextField; // dette vil tween nåværende score verdi privat var currentScoreTween: Tween; offentlig funksjon ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // hvis utvikleren ikke vil koble denne klassen til et symbol, må denne metoden kalles offentlig funksjon createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); offentlig funksjon setScore (_value: uint): void score = _value; tweenCurrentScore (); offentlig funksjon changeScore (_change: uint): void score + = _change; tweenCurrentScore (); privat funksjon showScore (event: Event): void currentScoreField.text = addCommas (currentScore); privat funksjon tweenCurrentScore (): void currentScoreTween = ny Tween (dette, "nåværendeScore", None.easeNone, currentScore, TRANSITION_LENGTH, true); privat funksjon addCommas (_score: uint): String // en streng, som vil ha poenget med kommaer var scoreString: String = new String (); // antall tegn våre poeng (uten kommaer) har var scoreLengde: uint = _score.toString (). lengde; scoreString = ""; // legg kommasene til strengen for (var jeg: uint = 0; i
Vi er ferdige!
Og det er det! Du kan utvide denne klassen og kanskje legge til noen lyder eller "fancy grafikk". Jeg håper du hadde en flott tid og lært noe, skål!