Saleth Empire Site de projets de jeux vidéos de la team AMK |
|
| Partie 1 - Comprendre une fenêtre ( Window_Base ) | |
| | Auteur | Message |
---|
Siegfried Admin
Nombre de messages : 1634 Age : 37 Localisation : Valence, France Emploi : Etudiant Loisirs : RPG Making, Musique, dessin, mangas Date d'inscription : 17/05/2006
| Sujet: Partie 1 - Comprendre une fenêtre ( Window_Base ) Dim 2 Sep - 16:29 | |
| Partie 1 - Comprendre une fenêtre ( Window_Base )Nous allons prendre la fenêtre-type : Window_Gold ( fenêtre de l'argent ). - Code:
-
#============================================================================== # ■ Window_Gold #------------------------------------------------------------------------------ # ゴールドを表示するウィンドウです。 #==============================================================================
class Window_Gold < Window_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end #-------------------------------------------------------------------------- # ● リフレッシュ #-------------------------------------------------------------------------- def refresh self.contents.clear cx = contents.text_size($data_system.words.gold).width self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2) end end Nous allons maintenant analyser ce script. Astuce : tout ce qui suit le caractère # et qui est en vert n'est pas pris en compte par le script, donc abusez-en pour mettre des commentaires, tester des choses... La classe - Code:
-
class Window_Gold < Window_Base Le nom de la classe est Window_Gold. Pour éviter de recoder tout le système pour des fenêtres qui regrouperont des méthodes similaires, on a tout mis dans Window_Base. Ainsi, vous pouvez appeler dans Window_Gold tout ce qui est défini dans Window_Base. Pour appeler la fenêtre à partir d'une scène, vous utiliserez - Code:
-
@gold_window = Window_Gold.new Cela sera détaillé en profondeur en abordant les scènes. L'initialisation - Code:
-
def initialize super(0, 0, 160, 64) self.contents = Bitmap.new(width - 32, height - 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize refresh end Quand vous créez une fenêtre ( Window_Gold.new par exemple ), l'objet instance est créé et la méthode initialize se lance. Ici, on définit ce qui est nécessaire pour la suite du fonctionnement de la fenêtre. def initializeMéthode initialize. super(0, 0, 160, 64)Les fenêtres les plus basiques fonctionnent comme suit : super(x, y, w, h) x = Coordonnée horizontale de la fenêtre y = Coordonnée verticale de la fenêtre w = Largeur h = Hauteur self.contents = Bitmap.new(width - 32, height - 32)Création du bitmap. C'est l'espace où apparaîtra le contenu de la fenêtre. Ici, c'est un rectangle intérieur à celui de la fenêtre avec une réduction de 16 pixels de chaque côté. Largeur de la fenêtre = 16 + Largeur de bitmap + 16 Hauteur de la fenêtre = 16 + Hauteur de bitmap + 16 self.contents.font.name = $fontface self.contents.font.size = $fontsize$fontface et $fontsize sont les variables globales qui définsissent respectivement la police d'écriture du jeu et sa taille. Vous pouvez les modifier dans Main. refreshAppelle la méthode refresh. endClôt la méthode initialize. Le rafraîchissementNon, ce n'est pas l'entr'acte avec apéritifs... - Code:
-
def refresh self.contents.clear cx = contents.text_size($data_system.words.gold).width self.contents.font.color = normal_color self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2) end Il s'agit de la mise à jour graphique de la fenêtre. Dans une scène, on l'appelle avec par exemple @gold_window.refresh. def refreshMéthode refresh. self.contents.clearSupprime le contenu de la fenêtre avant d'effectuer la suite de la mise à jour. Cela sert à éviter notamment des superpositions d'anciennes et nouvelles valeurs. self.contents.font.color = normal_colorChange la couleur de la police en normal_color ( blanc par défaut ). self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2)Dessine la quantité d'argent en possession de l'équipe ( variable $game_party.gold ). self.contents.font.color = system_colorChange la couleur de la police en system_color ( bleu par défaut ). self.contents.draw_text(124-cx, 0, cx, 32, $data_system.words.gold, 2)Dessine le nom utilisé pour la monnaie ( variable $data_system.words.gold ). endClôt la méthode refresh. La clôture - Code:
-
end Clôt la classe Window_Gold ainsi que ce tutorial.
Dernière édition par le Mer 31 Oct - 0:26, édité 2 fois | |
| | | Metroid_prime
Nombre de messages : 84 Age : 33 Localisation : Limousin, Limoges Emploi : Lycéen Loisirs : RPG, manga, l'ordinateur, astronomie Date d'inscription : 07/08/2006
| Sujet: Re: Partie 1 - Comprendre une fenêtre ( Window_Base ) Dim 2 Sep - 17:02 | |
| très bien expliqué, merci pour l'exemple! parcontre, les éléments entre parenthèse (4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2) correspond à quoi? à la localisation du sujet en question? Donc dans ce cas: self.contents.draw_text. | |
| | | Siegfried Admin
Nombre de messages : 1634 Age : 37 Localisation : Valence, France Emploi : Etudiant Loisirs : RPG Making, Musique, dessin, mangas Date d'inscription : 17/05/2006
| Sujet: Re: Partie 1 - Comprendre une fenêtre ( Window_Base ) Dim 2 Sep - 17:13 | |
| Extrait du tuto 2 qui aborde cela pour le modifier : - Spoiler:
Ligne 25 : Valeur de l'argent en possession - Code:
-
self.contents.draw_text(4, 0, 120-cx-2, 32, $game_party.gold.to_s, 2) La méthode draw_text permet d'écrire un texte, mémorisez-la bien. Elle fonctionne comme suit : self.contents.draw_text(x, y, w, h, texte, alignement) x = Coordonnée horizontale du texte y = Coordonnée verticale du texte w = Largeur h = Hauteur texte = texte affiché Ici, le texte affiché est la valeur de l'argent détenu par l'équipe, stockée dans $game_party.gold. Mais cette variable n'est pas faite pour être affichée en texte, il faut donc la convertir en "string" et ajoutant ".to_s" derrière. Vous pouvez ainsi afficher une variable ( en rajoutant ".to_s" derrière ), ou mettre n'importe quel texte entre guillements comme suit : - Code:
-
self.contents.draw_text(x, y, w, h, "Texte", alignement) alignement = placement du texte dans la largeur définie par w. 0 = aligné à gauche 1 = centré 2 = aligné à droite A savoir que si vous ne mettez pas d'alignment, la valeur par défaut est 0. self.contents.draw_text(x, y, w, h, texte) affichera donc un texte à gauche.
| |
| | | Metroid_prime
Nombre de messages : 84 Age : 33 Localisation : Limousin, Limoges Emploi : Lycéen Loisirs : RPG, manga, l'ordinateur, astronomie Date d'inscription : 07/08/2006
| Sujet: Re: Partie 1 - Comprendre une fenêtre ( Window_Base ) Dim 2 Sep - 17:26 | |
| Oui j'avais vu! dsl mais logiquement j'ai commencé par la partie1 donc j'ai su trop tard | |
| | | Siegfried Admin
Nombre de messages : 1634 Age : 37 Localisation : Valence, France Emploi : Etudiant Loisirs : RPG Making, Musique, dessin, mangas Date d'inscription : 17/05/2006
| Sujet: Re: Partie 1 - Comprendre une fenêtre ( Window_Base ) Dim 2 Sep - 17:36 | |
| Oui, je n'ai pas tenu à trop détailler dans cette partie. | |
| | | Contenu sponsorisé
| Sujet: Re: Partie 1 - Comprendre une fenêtre ( Window_Base ) | |
| |
| | | | Partie 1 - Comprendre une fenêtre ( Window_Base ) | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|