Bonjour, Je sais pas vraiment si ça vient de la méthode en fait, parce que les touches fonctionnent tout de même, bon, je vous passe d'abord mon code
Code:
class Scene_Tests < Scene_Base def start @fenetre = Ma_fen.new end def terminate @fenetre.dispose end def update @fenetre.update if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) Sound.play_decision $game_actors[1].hp -= 10 end end end class Ma_fen < Window_Base def initialize super(0, 0, 544, 416) self.contents.fill_rect(new_rect, new_color) end def new_color color = Color.new(255,0,0,255) end def new_rect w = $game_actors[1].hp*100/$game_actors[1].maxhp h = 25 x = 50 y = 50 return Rect.new(x,y,w,h) end end
Bon, c'est un petit code simple pour m'entraîner ^^'
Donc voilà, quand j'ouvre la fenêtre, la barre s'affiche correctement, en fonction de la vie du héros, la touche B fait quitter la scène, la touche C lui enlève des PVs, mais la fenêtre ne s'update pas du coup, pour voir que l'image a bien changé, je suis obligé de fermer la fenêtre et de la réouvrir Oo
Je ne comprends pas j'ai pourtant bien mis @fenetre.update dans def update Oo
L'update ne rafraichis pas ta barre, il faut que tu fasse appel ici à la méthode qui dessine la barre pour la réactualiser. Rajoute dans ta methode :
Code:
def update @fenetre.update if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) Sound.play_decision $game_actors[1].hp -= 10 @fenetre.new_color @fenetre.new_rect end end end
ca devrait marcher =)
En version plus propore :
Code:
class Scene_Tests < Scene_Base def start @fenetre = Ma_fen.new end
def terminate @fenetre.dispose end
def update @fenetre.update if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) Sound.play_decision $game_actors[1].hp -= 10 @fenetre.refresh end end end
class Ma_fen < Window_Base def initialize super(0, 0, 544, 416) self.contents.fill_rect(new_rect, new_color) end
def new_color color = Color.new(255,0,0,255) end
def new_rect w = $game_actors[1].hp*100/$game_actors[1].maxhp h = 25 x = 50 y = 50 return Rect.new(x,y,w,h) end
Est-il vraiment nécessaire de rappeler new_color étant donné que la barre doit rester rouge?
Edit: Remarque, ça ne change pas, la barre reste comme elle est...
Donc je me suis dit que c'était peut-être parce que vu qu'on enlevait des PVs, le rectangle créé était plus petit que celui d'avant, et il se crée peut-être dessus sans qu'on le voit (plus petit, même hauteur, même position, donc bon...), alors j'ai changé pour voir si en sens inverse ça marchait (en soignant), mais rien de plus convainquant, la barre reste toujours la même =/
Dernière édition par Gothor le Lun 31 Aoû 2009 - 11:18, édité 1 fois
Ah ouais je vois pourquoi ^^' J'ai mal lu ton code !
Code:
class Scene_Tests < Scene_Base def start @fenetre = Ma_fen.new end
def terminate @fenetre.dispose end
def update @fenetre.update if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) Sound.play_decision $game_actors[1].hp -= 10 @fenetre.refresh end end end
class Ma_fen < Window_Base def initialize super(0, 0, 544, 416) self.contents.fill_rect(new_rect, new_color) end
def new_color color = Color.new(255,0,0,255) end
def new_rect w = $game_actors[1].hp*100/$game_actors[1].maxhp h = 25 x = 50 y = 50 return Rect.new(x,y,w,h) end
def refresh self.contents.fill_rect(new_rect, new_color) end end
J'ai cru que new_rect créait la barre, mais je me suis trompée ^^' essaye ca !