Nästan alla spel där ute använder ett poängsystem för att hjälpa spelare att se deras framsteg. Det är viktigt att visa spelarens poäng på ett tydligt och roligt sätt. I denna Snabba Tips ska vi lära oss hur vi gör just det!
Klicka på knappen för att lägga till 20 000 poäng till din poäng:
I denna Snabba Tips ska vi lära oss hur du skapar en poängvisning. För att förbättra kvaliteten på vår skärm, kommer vi att göra två saker:
I slutet kommer vi att ha en mycket enkel och användbar klass, som du enkelt kan använda inom något av dina projekt.
Den här klassen kommer endast att göra med att visa poängen, inte med att beräkna den.
Först av, låt oss skapa vår klass; Jag har namngett den ScoreDisplay
:
paket import flash.display.Sprite; public class ScoreDisplay utökar Sprite public function ScoreDisplay ()
Låt oss långsamt lägga till några variabler:
paket import flash.display.Sprite; public class ScoreDisplay utökar Sprite // poänget som visas medan det ökar offentliga var currentScore: uint; // spelarens poäng privata var poäng: uint; allmän funktion ScoreDisplay ()
Vi ska visa våra poäng i en Textfält
. Om du vill använda ett Symbol när du arbetar med ScoreDisplay
, Du behöver inte skapa textfältet med kod. Men om du inte vill använda ett Symbol måste du ringa createScoreField ()
.
Kom ihåg att om du vill använda ditt eget Symbol måste du ge textfältet inne i den symbolen förekomstnamnet på currentScoreField
.
paket import flash.display.Sprite; importera flash.text.TextField; public class ScoreDisplay utökar Sprite // textfältet som visar currentScore public var currentScoreField: TextField; // poängen som visas medan den ökar allmänheten var currentScore: uint; // spelarens poäng privata var poäng: uint; offentlig funktion ScoreDisplay () // om utvecklaren inte länkar denna klass till en symbol måste den här metoden kallas offentlig funktion createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField);
Låt oss börja tänka på vad vi skulle vilja göra med vårt ScoreDisplay
klass. Vi skulle vilja kunna ställa in ett poäng, samt lägga till eller subtrahera från spelarens poäng. Så låt oss skapa dessa metoder!
paket import flash.display.Sprite; importera flash.text.TextField; public class ScoreDisplay utökar Sprite // textfältet som visar currentScore public var currentScoreField: TextField; // spelarens poäng privata var poäng: uint; // poängen som visas medan den ökar privat var currentScore: uint; offentlig funktion ScoreDisplay () // om utvecklaren inte länkar denna klass till en symbol måste den här metoden kallas offentlig funktion createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); allmän funktion setScore (_value: uint): void score = _value; allmän funktion changeScore (_change: uint): void score + = _change;
Hittills så bra kan vi nu sätta och ändra poängvärdet. Men hur ska vi visa detta? Även om det kanske inte verkar vara väldigt användbart, använder vi en inlämningsramhändelselyttare. Oroa dig inte, det är vettigt!
paket import flash.display.Sprite; importera flash.events.Event; importera flash.text.TextField; public class ScoreDisplay utökar Sprite // textfältet som visar currentScore public var currentScoreField: TextField; // spelarens poäng privata var poäng: uint; // poängen som visas medan den ökar privat var currentScore: uint; allmän funktion ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // om utvecklaren inte länkar denna klass till en symbol måste den här metoden kallas offentlig funktion createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); allmän funktion setScore (_value: uint): void score = _value; allmän funktion changeScore (_change: uint): void score + = _change; privat funktion showScore (händelse: Händelse): void currentScoreField.text = String (poäng);
Om vi skulle vilja använda vår klass i ett projekt så skulle det se ut så här. Verkar fungera rätt - poängen ändras - men vi är inte färdiga. Kom ihåg vad vi ville göra?
Låt oss börja med det första målet och lägga till kommatecken.
paket import flash.display.Sprite; importera flash.events.Event; importera flash.text.TextField; public class ScoreDisplay utökar Sprite // textfältet som visar currentScore public var currentScoreField: TextField; // spelarens poäng privata var poäng: uint; // poängen som visas medan den ökar privat var currentScore: uint; allmän funktion ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // om utvecklaren inte länkar denna klass till en symbol måste den här metoden kallas offentlig funktion createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); allmän funktion setScore (_value: uint): void score = _value; allmän funktion changeScore (_change: uint): void score + = _change; privat funktion showScore (händelse: Händelse): void currentScoreField.text = addCommas (score); privat funktion addCommas (_score: uint): String // en sträng, som kommer att få poängen med kommatecken var scoreString: String = new String (); // Antalet tecken vårt poäng (utan kommatecken) har var poängLängd: uint = _score.toString (). längd; scoreString = ""; // lägg till kommatecken i strängen för (var i: uint = 0; i
Steg 7: Övergång mellan poäng
Låt oss nu arbeta med vårt andra mål. Övergång mellan poängvärden, istället för att omedelbart bytas till det nya värdet.
För detta kan vi använda de fantastiska egenskaperna hos
Tween
klass. De flesta gånger tänker vi på Tween-klassen för att flytta visningsobjekt, men du kan använda den för att ändra ett numeriskt värde, inklusive vårt betyg.paket import fl.transitions.Tween; import fl.transitions.easing. *; importera flash.display.Sprite; importera flash.events.Event; importera flash.text.TextField; public class ScoreDisplay utökar Sprite // hur mycket tid (i ms) som behövs för övergång från ett poängvärde till en annan en privat statisk konst TRANSITION_LENGTH: uint = 500; // poängen som visas medan den ökar allmänheten var currentScore: uint; // spelarens poäng privata var poäng: uint; // textfältet som visar currentScore private var currentScoreField: TextField; // detta kommer att röra mellan nuvarande poängvärde privat var currentScoreTween: Tween; allmän funktion ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // om utvecklaren inte länkar denna klass till en symbol måste den här metoden kallas offentlig funktion createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); allmän funktion setScore (_value: uint): void score = _value; tweenCurrentScore (); allmän funktion changeScore (_change: uint): void score + = _change; tweenCurrentScore (); privat funktion showScore (händelse: Händelse): void currentScoreField.text = addCommas (currentScore); privat funktion tweenCurrentScore (): void currentScoreTween = new Tween (this, "currentScore", None.easeNone, currentScore, TRANSITION_LENGTH, true); privat funktion addCommas (_score: uint): String // en sträng, som kommer att få poängen med kommatecken var scoreString: String = new String (); // Antalet tecken vårt poäng (utan kommatecken) har var poängLängd: uint = _score.toString (). längd; scoreString = ""; // lägg till kommatecken i strängen för (var i: uint = 0; i
Var gjort!
Och det är allt! Du kan förlänga den här klassen och kanske lägga till lite ljud eller "fin grafik". Jag hoppas att du hade en bra tid och lärt dig något, skål!