Sujet n°4737
Posté par Antony le 5 Aoû - 00:18 (2009)
Titre : Beug après un éssais pour scripter
salut j'ai voulu créer une fenètre  pour m'entrainer a scripter et la fenètre ne marche pas car il y a un problème avec le scripte main.
mon scripte modifier par lén
Spoiler

class Window_My < Window_Base

 def initialize   
  super(0, 380, 640, 100)   
  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
  self.contents.font.color = Color.new(0,0,255,255)   
  self.contents.draw_text(0,0,120,32, "Salut, ca va!") 
 end

end


le main 
Spoiler

#=============================================================================
# ■ Main
#------------------------------------------------------------------------------
#  各クラスの定義が終わった後、ここから実際の処理が始まります。
#==============================================================================
begin
    file = File.open("data.txt", "w")
    for i in 1..493
      file.write("$data_pokemon[#{i}] = #{$data_pokemon.inspect}\n")
    end
    file.close
  $style = "DP"
  # Change the $fontface variable to change the font style
  $fontface = ["Pokemon DP", "Pokemon FRLG", "Pokemon RS", "Trebuchet MS"]
  $fontfacebis = ["Pokemon RS", "Pokemon DP"]
  $fontsizebis = 28
  # Change the $fontsize variable to change the font size
  if $style == "DP"
    # DP # Tailles étalon: 15 (1px) 31 (2px) et 47 (3px)
    $fontface = ["Pokemon DP", "Trebuchet MS"]
    $fontsizesmall = 15 # // hauteur min 14
    $fhs = 14
    $fontsize = 31 # // hauteur min 28
    $fh = 28
    $fontsizebig = 47
    $fhb = 42
  end
  if $style == "FRLG"
    # FRLG # Tailles étalon: 21 (1px)  38 (2px) 57 (3px)
    $fontface = ["Pokemon FRLG", "Trebuchet MS"]
    $fontsizesmall = 21 # // hauteur min 13
    $fhs = 13
    $fontsize = 38  # // hauteur min 26
    $fh = 26
    $fontsizebig = 57  # // hauteur min 39
    $fhb = 39
  end
  $fontsmall = ["Pokemon Emerald Small", "Pokemon DP", "Trebuchet MS"]
  # Pokemon Emerald Small 2px: 25 , 3px: 37
  $fontsmallsize = 37
  $fs = 34

  $fontnarrow = ["Pokemon Emerald Narrow", "Pokemon DP", "Trebuchet MS"]
  # Pokemon Emerald Narrow 3px: 47
  $fontnarrowsize = 47
  $fn = 42

  # トランジション準備
  splash.dispose
  Graphics.transition(5)
  Graphics.freeze
  # シーンオブジェクト (タイトル画面) を作成
  $scene = Scene_Title.new
  # $scene が有効な限り main メソッドを呼び出す
  while $scene != nil
    $scene.main
  end
  # フェードアウト
  Graphics.transition(20)
rescue Exception => exception
  EXC::error_handler(exception)
rescue Errno::ENOENT
  # 例外 Errno::ENOENT を補足
  # ファイルがオープンできなかった場合、メッセージを表示して終了する
  filename = $!.message.sub("Ne trouve pas le fichier ou le répertoire - ", "")
  print("Le ficher #{filename} n'a pas été trouvé.")
end



Spoiler




le log
Spoiler

---------- Erreur de script : Main ----------
----- Type
NoMethodError
----- Message
- ARGS - []
undefined method `main' for #<Window_My:0x6d87a20>
----- Position dans Main
Ligne 57
----- Backtrace
Script : Main | Ligne : 57


Posté par Sphinx le 5 Aoû - 06:20 (2009)
tu as appelé ta fenêtre en faisant $scene = Window_My.new ?


si oui, alors inutile de chercher plus loin =) Une scene doit contenir un main.

Posté par Antony le 5 Aoû - 07:52 (2009)
Merci donc je me suis pas tromper mais y a t-il une solution pour que je mets pas de main car pour appeller une class je connais que cette façon.

Posté par Sphinx le 5 Aoû - 11:16 (2009)
>> le main sert de fonction principale dans toutes les scenes. Dis nous d'abord à quoi doit servir ta scene Clin d'œil foireux

Posté par Krosk le 5 Aoû - 13:41 (2009)
ou peut etre simplement qu'il veut créer une fenetre, et non une scene.

Posté par Antony le 5 Aoû - 17:17 (2009)
Voila pour l'instant je veux juste créer une fenètre et l'appeler. 

Par contre, j'ai une fenètre sélectable que quand je sélectionne par exemple "salut" je puisse appeler la fenètre que j'ai faite. Je voudrais savoir si dans la méthode update aprés when 0 ce qui faut mettre exactement pour appeller la fenètre et bien sur pour que la fenètre sélectable s'enlève.

Posté par Sphinx le 5 Aoû - 18:46 (2009)
^o^ ah !


>> pour appeler ta fenêtre, faut faire :

Code:
une_variable = Window_My.new



Pour désactiver une window_selectable, tu peux faire :
Code:
ta_variable.active = false
ta_variable.visible = false

>> tu auras possibilité de la réutiliser ensuite.

Pour la supprimer définitivement, et c'est la même méthode pour toutes les classes qui héritent de Window (c'est à dire : Window_Base, Window_Selectable, Window_Command, ... et toutes les classes qui en héritent), tu peux faire :
Code:
ta_variable.dispose


=) Voilou

Posté par Antony le 5 Aoû - 22:24 (2009)
merci mais pour désactiver une fenètre sélectable marche mé ma fenètre reste afficher.

Posté par Sphinx le 6 Aoû - 07:38 (2009)
même après le .visible = false ? :?

Posté par Antony le 6 Aoû - 08:48 (2009)
je parle pas la fenètre ou j'ai sélectionner mé celle que j'ai appelé aprés le when 0 dans la méthode update