设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2258|回复: 17
打印 上一主题 下一主题

[已经解决] 指令窗口怎么释放?我用dispose会报错。已解决

[复制链接]

Lv2.观梦者

梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
帖子
205

开拓者

跳转到指定楼层
1
发表于 2017-10-2 21:54:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 飞翔的小鸟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  附上文件

Lv4.逐梦者

梦石
0
星屑
19433
在线时间
3102 小时
注册时间
2013-1-11
帖子
1291
2
发表于 2017-10-2 23:39:15 | 只看该作者
Scene_Map里面terminate方法后面加上:@window_shortcut = nil;$shortcut_num = 0

点评

我在一楼有工程,你可以去看看  发表于 2017-10-3 14:12
你看看,加了,还是报错  发表于 2017-10-3 14:09
@window_shortcut.dispose,我这样子写下去,会报错,你看看我的工程就知道了(工程里被注释掉了)  发表于 2017-10-3 13:23
直接关掉就dispose啊,或者visiable隐藏也行  发表于 2017-10-3 08:05
是个办法,但是不换场景,直接关掉的话,要等几秒才会消失,没有其他的办法吗?  发表于 2017-10-2 23:56
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
帖子
205

开拓者

3
 楼主| 发表于 2017-10-3 13:27:37 | 只看该作者
本帖最后由 飞翔的小鸟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


还是报错

点评

释放的地方有两个,一个是Scene_Base自动释放,一个是你手动释放,也就是其中一个释放后,另一个释放则会出错,所以要加判断  发表于 2017-10-3 14:04
检查你@a.dispose之前 @a是不是已经dispose掉了,用 if [email protected]? 判断未被释放  发表于 2017-10-3 14:00
在Scene_Base里有instance_variables会遍历所有实例化的变量然后进行更新释放操作  发表于 2017-10-3 13:59
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
19433
在线时间
3102 小时
注册时间
2013-1-11
帖子
1291
4
发表于 2017-10-3 14:16:05 | 只看该作者
本帖最后由 张咚咚 于 2017-10-3 14:35 编辑
飞翔的小鸟3 发表于 2017-10-3 13:27
我刚刚想了想,改成全局变量就可以
更新:出问题了,用全局变量光标是死的。
如果说局部变量代表的窗口已 ...

忘记了一处地方。。


点评

看得见我给你的发消息吗?  发表于 2017-10-3 14:43
谢谢,这下没问题了。你们是不是没事一直看脚本编辑器里的代码?不然怎么知道这么多?  发表于 2017-10-3 14:38
忘了该update里面了。。。  发表于 2017-10-3 14:35
大佬,还是报错,其实你说base会释放窗口,我就试着把“释放全部窗口”注释掉了,也是会报错.....  发表于 2017-10-3 14:29
不对,这是rpgav的知识  发表于 2017-10-3 14:24
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-17 14:46

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表