Presque tous les jeux utilisent un système de notation pour aider les joueurs à voir leurs progrès. Il est essentiel de montrer le score du joueur de manière claire et amusante. Dans ce petit conseil, nous allons apprendre à faire exactement cela!
Cliquez sur le bouton pour ajouter 20 000 points à votre score:
Dans ce petit conseil, nous allons apprendre à créer un affichage de partition. Pour améliorer la qualité de notre affichage, nous allons faire deux choses:
Au final, nous aurons un cours très simple et utile, que vous pourrez facilement utiliser dans n'importe lequel de vos projets..
Cette classe ne se préoccupera que d’afficher la partition, pas de la calculer..
Tout d'abord, créons notre classe; Je l'ai nommé ScoreDisplay
:
package import flash.display.Sprite; Classe publique ScoreDisplay étend Sprite fonction publique ScoreDisplay ()
Ajoutons lentement quelques variables:
package import flash.display.Sprite; public class ScoreDisplay étend Sprite // le score affiché, alors qu'il augmente public var currentScore: uint; // score du joueur private var score: uint; fonction publique ScoreDisplay ()
Nous allons montrer notre score dans un Champ de texte
. Si vous souhaitez utiliser un symbole lorsque vous travaillez avec ScoreDisplay
, vous n'aurez pas besoin de créer le champ de texte par code. Toutefois, si vous ne souhaitez pas utiliser de symbole, vous devez appeler createScoreField ()
.
N'oubliez pas que si vous souhaitez utiliser votre propre symbole, vous devez donner au champ de texte à l'intérieur de ce symbole le nom d'occurrence de currentScoreField
.
package import flash.display.Sprite; import flash.text.TextField; public class ScoreDisplay étend Sprite // le champ de texte qui affichera currentScore public var currentScoreField: TextField; // le score affiché alors qu'il est en train d'augmenter public var currentScore: uint; // score du joueur private var score: uint; fonction publique ScoreDisplay () // si le développeur ne lie pas cette classe à un symbole, cette méthode doit être appelée fonction publique createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField);
Maintenant, commençons à penser à ce que nous aimerions faire avec notre ScoreDisplay
classe. Nous aimerions pouvoir définir un score, ainsi que pour ajouter ou soustraire du score du joueur. Alors créons ces méthodes!
package import flash.display.Sprite; import flash.text.TextField; public class ScoreDisplay étend Sprite // le champ de texte qui affichera currentScore public var currentScoreField: TextField; // score du joueur private var score: uint; // le score qui est affiché alors qu'il augmente private var currentScore: uint; fonction publique ScoreDisplay () // si le développeur ne lie pas cette classe à un symbole, cette méthode doit être appelée fonction publique createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); fonction publique setScore (_value: uint): void score = _value; fonction publique changeScore (_change: uint): void score + = _change;
Jusqu'ici tout va bien, nous pouvons maintenant définir et modifier la valeur du score. Mais comment allons-nous afficher cela? Même si cela ne semble pas encore très utile, nous utiliserons un écouteur d'événements enter frame. Ne vous inquiétez pas, cela aura du sens!
package import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; public class ScoreDisplay étend Sprite // le champ de texte qui affichera currentScore public var currentScoreField: TextField; // score du joueur private var score: uint; // le score qui est affiché alors qu'il augmente private var currentScore: uint; fonction publique ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // si le développeur ne lie pas cette classe à un symbole, cette méthode doit être appelée fonction publique createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); fonction publique setScore (_value: uint): void score = _value; fonction publique changeScore (_change: uint): void score + = _change; fonction privée showScore (event: Event): void currentScoreField.text = String (score);
Si nous souhaitons utiliser notre classe dans un projet, cela ressemblerait à ceci. Semble fonctionner correctement - le score change - mais nous n’avons pas terminé. Rappelez-vous ce que nous voulions faire?
Commençons par le premier objectif, en ajoutant des virgules.
package import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; public class ScoreDisplay étend Sprite // le champ de texte qui affichera currentScore public var currentScoreField: TextField; // score du joueur private var score: uint; // le score qui est affiché alors qu'il augmente private var currentScore: uint; fonction publique ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // si le développeur ne lie pas cette classe à un symbole, cette méthode doit être appelée fonction publique createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); fonction publique setScore (_value: uint): void score = _value; fonction publique changeScore (_change: uint): void score + = _change; fonction privée showScore (event: Event): void currentScoreField.text = addCommas (score); fonction privée addCommas (_score: uint): String // une chaîne, qui aura le score avec des virgules var score score: String = new String (); // le nombre de caractères de notre score (sans virgules) a var scoreLength: uint = _score.toString (). length; scoreString = ""; // ajoute les virgules à la chaîne de (var i: uint = 0; i
Étape 7: Transition entre les scores
Travaillons maintenant sur notre deuxième objectif. transition entre les valeurs de score, au lieu de passer immédiatement à la nouvelle valeur.
Pour cela, nous pouvons utiliser les capacités impressionnantes du
Tween
classe. La plupart du temps, nous pensons à la classe Tween pour le déplacement d'objets d'affichage, mais vous pouvez l'utiliser pour modifier n'importe quelle valeur numérique, y compris notre score..package import fl.transitions.Tween; import fl.transitions.easing. *; import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; public class ScoreDisplay étend Sprite // la durée (en ms) nécessaire pour passer d'une valeur de partition à une autre privée statique constante TRANSITION_LENGTH: uint = 500; // le score affiché alors qu'il est en train d'augmenter public var currentScore: uint; // score du joueur private var score: uint; // le champ de texte qui affichera currentScore private var currentScoreField: TextField; // cela va interpoler la valeur du score actuel private var currentScoreTween: Tween; fonction publique ScoreDisplay () addEventListener (Event.ENTER_FRAME, showScore, false, 0, true); // si le développeur ne lie pas cette classe à un symbole, cette méthode doit être appelée fonction publique createScoreField (): void currentScoreField = new TextField (); addChild (currentScoreField); fonction publique setScore (_value: uint): void score = _value; tweenCurrentScore (); fonction publique changeScore (_change: uint): void score + = _change; tweenCurrentScore (); fonction privée showScore (event: Event): void currentScoreField.text = addCommas (currentScore); fonction privée tweenCurrentScore (): void currentScoreTween = new Tween (this, "currentScore", None.easeNone, currentScore, TRANSITION_LENGTH, true); fonction privée addCommas (_score: uint): String // une chaîne, qui aura le score avec des virgules var score score: String = new String (); // le nombre de caractères de notre score (sans virgules) a var scoreLength: uint = _score.toString (). length; scoreString = ""; // ajoute les virgules à la chaîne de (var i: uint = 0; i
Avaient fini!
Et c'est tout! Vous pouvez étendre cette classe et peut-être ajouter des sons ou des «graphiques sophistiqués». J'espère que vous avez passé un bon moment et appris quelque chose, bravo!