Project1

标题: 指令窗口怎么释放?我用dispose会报错。已解决 [打印本页]

作者: 飞翔的小鸟3    时间: 2017-10-2 21:54
标题: 指令窗口怎么释放?我用dispose会报错。已解决
本帖最后由 飞翔的小鸟3 于 2017-10-3 14:39 编辑

窗口:
  1. class Window_shortcut < Window_Command
  2.   def initialize
  3.     super(0,250)
  4.     make_command_list
  5.     command_window
  6.     activate
  7.     item_max
  8.     process_cursor_move
  9.   end
  10.   
  11.   def make_command_list
  12.     add_command("开启/关闭残血量", :blood_volume)
  13.     add_command("开启/关闭残弹量", :Bomb_residue)
  14.     add_command("更换武器", :change_weapon)
  15.   end
  16.   def command_window
  17.     set_handler(:blood_volume, method(:run_blood_volume))
  18.     set_handler(:Bomb_residue, method(:run_Bomb_residue))
  19.     set_handler(:change_weapon, method(:run_change_weapon))
  20.   end
  21.   def run_blood_volume
  22.   end
  23.   def run_Bomb_residue
  24.   end
  25.   def run_change_weapon
  26.   end
  27.   def item_max
  28.     return 3
  29.   end
  30.   def process_cursor_move
  31.     return unless cursor_movable?
  32.     last_index = @index
  33.     cursor_down (Kboard.keyboard(0x32))  if Kboard.keyboard(0x32)
  34.     cursor_up   (Kboard.keyboard(0x31))    if Kboard.keyboard(0x31)
  35.     Sound.play_cursor if @index != last_index
  36.   end
  37. end
复制代码

在map的update里调用
  1.   def shortcut_window
  2.     if Kboard.keyboard(0x09)
  3.       if $shortcut_num == nil or $shortcut_num == 0
  4.       $shortcut_num = 1
  5.       @window_shortcut = Window_shortcut.new
  6.       @window_shortcut.activate
  7.       @window_shortcut.update
  8.       else
  9.       @window_shortcut.close
  10. #~       @window_shortcut.dispose
  11.       $shortcut_num = 0
  12.       end
  13.     end
  14.   end
复制代码

不知道为啥,不释放窗口,窗口打开过时,如果打开菜单并取消掉就报错
http://pan.baidu.com/s/1pLgGkEf  附上文件

作者: 张咚咚    时间: 2017-10-2 23:39
Scene_Map里面terminate方法后面加上:@window_shortcut = nil;$shortcut_num = 0
作者: 飞翔的小鸟3    时间: 2017-10-3 13:27
本帖最后由 飞翔的小鸟3 于 2017-10-3 14:08 编辑
张咚咚 发表于 2017-10-2 23:39
Scene_Map里面terminate方法后面加上:@window_shortcut = nil;$shortcut_num = 0


我刚刚想了想,改成全局变量就可以
更新:出问题了,用全局变量光标是死的。
如果说局部变量代表的窗口已释放或者局部变量被清空的话,为啥我用@a.close可以关闭窗口?然后我用@a.dispose却不可以释放窗口?


RUBY 代码复制
  1. def bag_new
  2.     if Kboard.keyboard(0x58)
  3.     if $bag_num == nil or $bag_num == 0
  4.       $bag_num = 1
  5.       @window_newmenu = Window_newmenu.new
  6.       @window_newmenu.activate
  7.       @window_newmenu.update
  8.       $game_switches[42] = true
  9.     else
  10.       if !@window_newmenu.disposed?
  11.       $game_switches[42] = false
  12.       @window_newmenu.dispose
  13.       $bag_num = 0
  14.       end
  15.     end
  16.     end
  17.   end


还是报错

作者: 张咚咚    时间: 2017-10-3 14:16
本帖最后由 张咚咚 于 2017-10-3 14:35 编辑
飞翔的小鸟3 发表于 2017-10-3 13:27
我刚刚想了想,改成全局变量就可以
更新:出问题了,用全局变量光标是死的。
如果说局部变量代表的窗口已 ...

忘记了一处地方。。







欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1