- PumpkinGMembre
- Nombre de messages : 8
Distinction : aucune
Date d'inscription : 12/08/2015
[Error Window_Base] Disposed Window
Mar 18 Aoû 2015 - 0:35
Hello à tous !
Alors en ce moment je crée un script de journal qui recense toutes les rencontres effectuées au cours d'un jeu. Je suis confronté cependant à un petit problème. Du menu je lance une nouvelle scène, le codex (une liste des différents personnages), qui lui peut afficher la description de chaque personnage en le selectionnant (ce qui ouvre une nouvelle fenetre).
Lorsque j'arrive à ce script (qui ferme la fenêtre de description et revient à la liste des personnages), tout se passe bien.
Seulement, après avoir avoireffectué cette action, si je retourne sur le menu, ça provoque une erreur :
J'imagine bien que ça provient de SceneManager.call(Scene_CodexList), mais je ne saurais expliquer pourquoi.
Merci de votre aide !
Les scripts en entiers :
Menu_Codex :
Scene_CodexList :
Window_Codex :
Alors en ce moment je crée un script de journal qui recense toutes les rencontres effectuées au cours d'un jeu. Je suis confronté cependant à un petit problème. Du menu je lance une nouvelle scène, le codex (une liste des différents personnages), qui lui peut afficher la description de chaque personnage en le selectionnant (ce qui ouvre une nouvelle fenetre).
Lorsque j'arrive à ce script (qui ferme la fenêtre de description et revient à la liste des personnages), tout se passe bien.
- Spoiler:
def close_window_codex
@codex_ouvert = false;
SceneManager.call(Scene_CodexList)
end
Seulement, après avoir avoireffectué cette action, si je retourne sur le menu, ça provoque une erreur :
J'imagine bien que ça provient de SceneManager.call(Scene_CodexList), mais je ne saurais expliquer pourquoi.
Merci de votre aide !
Les scripts en entiers :
Menu_Codex :
- Spoiler:
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# This class performs the menu screen processing.
#==============================================================================
class Scene_Menu < Scene_MenuBase
alias ccm create_command_window
def create_command_window
ccm() #call the original method
@command_window.set_handler(:codex, method(:codex))
end
def codex()
#@window = Window_Codex.new
#@window.change_text("Eliphas the Inheritor.")
SceneManager.call(Scene_CodexList)
end
end
#==============================================================================
# ** Window_MenuCommand
#------------------------------------------------------------------------------
# This command window appears on the menu screen.
#==============================================================================
class Window_MenuCommand < Window_Command
#--------------------------------------------------------------------------
# * For Adding Original Commands
#--------------------------------------------------------------------------
alias aoc add_original_commands
def add_original_commands
aoc()
add_command("Codex", :codex);
#Rajouter true ou false en 3ème argument pour enable le menu
end
end
Scene_CodexList :
- Spoiler:
- class Window_CommandMine < Window_Command
def make_command_list
eliphas_contenu = "A remplir plus tard"
$codex = [{'png'=>'eliphas','nom'=>'Eliphas','symbole'=>:eliphas,'contenu'=> eliphas_contenu},{'png'=>'failsnake','nom'=>'Failsnake','symbole'=>:failsnake},{'png'=>'shnooze','nom'=>'Shnooze','symbole'=>:shnooze},{'png'=>'darkminster','nom'=>'Darkminster','symbole'=>:darkminster}] unless defined? $codex
# Trie le tableau par noms
$codex = $codex.sort do |a, b|
a['nom'] <=> b['nom'] # Tri sur le second élément
end
$codex.each do |perso|
add_command(perso['nom'], :window_codex)
end
end
end
class Scene_CodexList < Scene_MenuBase
def start()
super
create_background
create_windows
@cursor = 0
@contenu_ouvert = false;
@bit = Sprite.new
change_picture()
end
def create_windows
@cmd = Window_CommandMine.new(0,0)
# assignation des méthodes à chaque élément de la liste
@cmd.set_handler(:window_codex, method(:window_codex))
end
def change_picture
@bit.bitmap = Cache.picture($codex[@cursor]['png'])
end
def window_codex
@window_codex = Window_Codex.new(@cursor)
@codex_ouvert = true
end
def update
super
if Input.trigger?(:B)
unless @codex_ouvert
SceneManager.return
RPG::SE.new("Cancel2", 100, 100).play
else
close_window_codex
end
end
def close_window_codex
@codex_ouvert = false;
SceneManager.call(Scene_CodexList)
end
if Input.trigger?(:DOWN) && !@codex_ouvert
unless (@cursor == ($codex.count - 1))
@cursor += 1
change_picture()
else
@cursor = 0
change_picture()
end
end
if Input.trigger?(:UP) && !@codex_ouvert
unless (@cursor == 0)
@cursor -= 1
change_picture()
else
@cursor = $codex.count - 1
change_picture()
end
end
end
end
Window_Codex :
- Spoiler:
- class Window_Codex < Window_Base
def initialize(cursor)
super(160,0,385,415)
@cursor = cursor
change_text ($codex[@cursor]['contenu'])
end
def change_text (text)
#return unless text.is_a?(String)
#contents.clear
draw_text(text,0,0,300,300)
end
#--------------------------------------------------------------------------
# * Draw Text
# args : Same as Bitmap#draw_text.
#--------------------------------------------------------------------------
def draw_text(text,x,y, text_width, text_height, alignment = 0)
contents.draw_text(x,y, text_width, text_height,text, alignment)
end
end
- PumpkinGMembre
- Nombre de messages : 8
Distinction : aucune
Date d'inscription : 12/08/2015
Re: [Error Window_Base] Disposed Window
Mar 18 Aoû 2015 - 0:41
A la seconde où j'ai posté mon message, j'ai eu un déclic.
Il suffisait de remplacer le SceneManager.return par un call du Scene_Menu...
Logiquement. Il essayait de charger une fenêtre supprimée, donc bon.
Désolé du dérangement.
Il suffisait de remplacer le SceneManager.return par un call du Scene_Menu...
Logiquement. Il essayait de charger une fenêtre supprimée, donc bon.
Désolé du dérangement.
- vincent26Membre
- Nombre de messages : 766
Age : 28
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010
Re: [Error Window_Base] Disposed Window
Mar 18 Aoû 2015 - 1:09
ton script est bizarre car tu utilise trop de call
def close_window_codex
@codex_ouvert = false;
SceneManager.call(Scene_CodexList)
end
met plutôt
def close_window_codex
@codex_ouvert = false;
@window_codex.close
end
et
if Input.trigger?(:B)
unless @codex_ouvert
SceneManager.return
RPG::SE.new("Cancel2", 100, 100).play
else
if Input.trigger?(:B)
unless @codex_ouvert
return_scene
RPG::SE.new("Cancel2", 100, 100).play
else
def close_window_codex
@codex_ouvert = false;
SceneManager.call(Scene_CodexList)
end
met plutôt
def close_window_codex
@codex_ouvert = false;
@window_codex.close
end
et
if Input.trigger?(:B)
unless @codex_ouvert
SceneManager.return
RPG::SE.new("Cancel2", 100, 100).play
else
if Input.trigger?(:B)
unless @codex_ouvert
return_scene
RPG::SE.new("Cancel2", 100, 100).play
else
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|