Bei fast allen Spielen gibt es ein Punktesystem, mit dem die Spieler ihre Fortschritte sehen können. Es ist wichtig, die Punktzahl des Spielers auf klare und unterhaltsame Weise anzuzeigen. In diesem Quick Tipp erfahren Sie, wie Sie genau das tun!
Klicken Sie auf die Schaltfläche, um 20.000 Punkte zu Ihrer Punktzahl hinzuzufügen:
In diesem Quick Tip erfahren Sie, wie Sie eine Score-Anzeige erstellen. Um die Qualität unserer Anzeige zu verbessern, werden wir zwei Dinge tun:
Am Ende haben wir eine sehr einfache und nützliche Klasse, die Sie problemlos in jedem Ihrer Projekte verwenden können.
Diese Klasse beschäftigt sich nur mit der Anzeige der Partitur, nicht mit der Berechnung.
Lassen Sie uns zuerst unsere Klasse erstellen. Ich habe es benannt ScoreDisplay
:
package import flash.display.Sprite; public class ScoreDisplay erweitert Sprite öffentliche Funktion ScoreDisplay ()
Fügen wir langsam einige Variablen hinzu:
package import flash.display.Sprite; public class ScoreDisplay erweitert Sprite // die angezeigte Punktzahl, während es den öffentlichen Wert erhöht var currentScore: uint; // die Partitur des Spielers private var score: uint; öffentliche Funktion ScoreDisplay ()
Wir werden unsere Punktzahl in einem zeigen Textfeld
. Wenn Sie beim Arbeiten mit einem Symbol arbeiten möchten ScoreDisplay
, Sie müssen das Textfeld nicht per Code erstellen. Wenn Sie jedoch kein Symbol verwenden möchten, müssen Sie anrufen createScoreField ()
.
Denken Sie daran, dass Sie, wenn Sie Ihr eigenes Symbol verwenden möchten, dem Textfeld in diesem Symbol den Instanznamen von geben müssen currentScoreField
.
package import flash.display.Sprite; import flash.text.TextField; öffentliche Klasse ScoreDisplay erweitert Sprite // das Textfeld, in dem currentScore angezeigt wird. public var currentScoreField: TextField; // die Partitur, die angezeigt wird, während sie sich erhöht public var currentScore: uint; // die Partitur des Spielers private var score: uint; public function ScoreDisplay () // Wenn der Entwickler diese Klasse nicht mit einem Symbol verknüpft, muss diese Methode als public function bezeichnet werden. createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField);
Fangen wir an zu überlegen, was wir mit unserem machen möchten ScoreDisplay
Klasse. Wir möchten in der Lage sein, eine Punktzahl festzulegen sowie die Punktzahl des Spielers zu addieren oder von dieser abzuziehen. Also lassen Sie uns diese Methoden erstellen!
package import flash.display.Sprite; import flash.text.TextField; public class ScoreDisplay erweitert Sprite // das Textfeld, das currentScore zeigt. public var currentScoreField: TextField; // die Partitur des Spielers private var score: uint; // die Partitur, die angezeigt wird, während sie private var currentScore erhöht: uint; public function ScoreDisplay () // Wenn der Entwickler diese Klasse nicht mit einem Symbol verknüpft, muss diese Methode als public function bezeichnet werden. createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); public function setScore (_value: uint): void score = _value; public function changeScore (_change: uint): void score + = _change;
So weit so gut, wir können jetzt den Wert des Scores festlegen und ändern. Aber wie zeigen wir das? Auch wenn es noch nicht sehr nützlich erscheint, verwenden wir einen Ereignis-Listener. Mach dir keine Sorgen, es wird Sinn machen!
package import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; public class ScoreDisplay erweitert Sprite // das Textfeld, das currentScore zeigt. public var currentScoreField: TextField; // die Partitur des Spielers private var score: uint; // die Partitur, die angezeigt wird, während sie private var currentScore erhöht: uint; public function ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // Wenn der Entwickler diese Klasse nicht mit einem Symbol verknüpft, muss diese Methode als public function createScoreField () bezeichnet werden: void currentScoreField = new TextField (); addChild (currentScoreField); public function setScore (_value: uint): void score = _value; public function changeScore (_change: uint): void score + = _change; private Funktion showScore (Ereignis: Ereignis): void currentScoreField.text = String (score);
Wenn wir unsere Klasse in einem Projekt verwenden möchten, würde es so aussehen. Scheint richtig zu funktionieren - die Punktzahl ändert sich - aber wir sind noch nicht fertig. Erinnern Sie sich, was wir tun wollten?
Beginnen wir mit dem ersten Ziel und fügen Sie Kommas hinzu.
package import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; public class ScoreDisplay erweitert Sprite // das Textfeld, das currentScore zeigt. public var currentScoreField: TextField; // die Partitur des Spielers private var score: uint; // die Partitur, die angezeigt wird, während sie private var currentScore erhöht: uint; public function ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // Wenn der Entwickler diese Klasse nicht mit einem Symbol verknüpft, muss diese Methode als public function createScoreField () bezeichnet werden: void currentScoreField = new TextField (); addChild (currentScoreField); public function setScore (_value: uint): void score = _value; public function changeScore (_change: uint): void score + = _change; private Funktion showScore (Ereignis: Ereignis): void currentScoreField.text = addCommas (score); private Funktion addCommas (_score: uint): String // ein String, der die Punktzahl mit Kommas erhält var scoreString: String = new String (); // Die Anzahl der Zeichen, die unsere Punktzahl (ohne Kommas) hat, hat var scoreLength: uint = _score.toString (). length; scoreString = ""; // füge die Kommas zu der Zeichenfolge hinzu für (var i: uint = 0; i
Schritt 7: Übergang zwischen Noten
Nun lasst uns an unserem zweiten Ziel arbeiten. Übergang zwischen Score-Werten, anstatt sofort auf den neuen Wert zu wechseln.
Dafür können wir die fantastischen Fähigkeiten des nutzen
Tween
Klasse. Meistens denken wir an die Tween-Klasse zum Verschieben von Anzeigeobjekten, Sie können sie jedoch verwenden, um jeden numerischen Wert einschließlich unserer Bewertung zu ändern.package import fl.transitions.Tween; import fl.transitions.easing. *; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; public class ScoreDisplay erweitert Sprite // die Zeit (in ms), die für den Übergang von einem Score-Wert zu einem anderen privaten statischen const benötigt wird TRANSITION_LENGTH: uint = 500; // die Partitur, die angezeigt wird, während sie sich erhöht public var currentScore: uint; // die Partitur des Spielers private var score: uint; // das Textfeld, das currentScore private var zeigt currentScoreField: TextField; // Dies wird zwischen dem Wert der aktuellen Partitur tween private var currentScoreTween: Tween; public function ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // Wenn der Entwickler diese Klasse nicht mit einem Symbol verknüpft, muss diese Methode als public function createScoreField () bezeichnet werden: void currentScoreField = new TextField (); addChild (currentScoreField); public function setScore (_value: uint): void score = _value; tweenCurrentScore (); public function changeScore (_change: uint): void score + = _change; tweenCurrentScore (); private Funktion showScore (Ereignis: Ereignis): void currentScoreField.text = addCommas (currentScore); private Funktion tweenCurrentScore (): void currentScoreTween = neuer Tween (dieser "currentScore", None.easeNone, currentScore, TRANSITION_LENGTH, true); private Funktion addCommas (_score: uint): String // ein String, der die Punktzahl mit Kommas erhält var scoreString: String = new String (); // Die Anzahl der Zeichen, die unsere Punktzahl (ohne Kommas) hat, hat var scoreLength: uint = _score.toString (). length; scoreString = ""; // füge die Kommas zu der Zeichenfolge hinzu für (var i: uint = 0; i
Wir sind fertig!
Und das ist es! Sie könnten diese Klasse erweitern und vielleicht ein paar Sounds oder "ausgefallene Grafiken" hinzufügen. Ich hoffe, du hattest eine tolle Zeit und hast etwas gelernt, Prost!