查看: 2676|回复: 21

[已经解决] 释放窗口时出错 已解决

[复制链接]
梦石
0
星屑
470
在线时间
159 小时
注册时间
2013-11-2
回帖
177

开拓者

发表于 2017-10-4 01:09:07 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 飞翔的小鸟3 于 2017-10-4 19:49 编辑


之前问过一个帖子,类似问题,原因是我自己释放一次,然后在Scene_Base自动释放一次,导致错误
这次是指向Window_Selectable,他或者他的父类是否有一样的自动释放的代码?我找不到啊。
然后,有一个奇怪的问题,我是按同一个键打开关闭血条,按一两次不会出错,要按多次才会出错。这很奇怪。

第一个问题解决了,图片pass掉


血量窗口:
[pre lang="ruby"]class Blood_rect < Window_Selectable
  def initialize
    super(436,-12,124,49)
  end
  def open_rect
    $blood_rect.opacity = 0
    a = Color.new(255,0,0)
    $blood_rect.contents.clear
    $blood_rect.contents.fill_rect(0,0,$game_variables[14],25,a)
  end
  def close_rect
    $blood_rect.contents.clear
    $blood_rect.contents.dispose
    $blood_rect.dispose
  end
end
[/pre]


这个可以不用管他,用来调出血条的快捷调用窗口
[pre lang="ruby"]class Window_shortcut < Window_Command
  def initialize
    super(0,250)
    make_command_list
    command_window
    activate
    item_max
    process_cursor_move
  end
  
  def make_command_list
    add_command("开启/关闭残血量", :blood_volume)
    add_command("开启/关闭残弹量", :Bomb_residue)
    add_command("更换武器", :change_weapon)
  end
  def command_window
    set_handler(:blood_volume, method(:run_blood_volume))
    set_handler(:Bomb_residue, method(:run_Bomb_residue))
    set_handler(:change_weapon, method(:run_change_weapon))
  end
  def run_blood_volume
    activate
    $var2 ||= 0
    $var2 = ($var2 == 0 ? 1 : 0 )
    if $var2 == 1
      $game_switches[38] = true
    else $var2 == 0
      $game_switches[39] = true
    end
  end
  def run_Bomb_residue
  end
  def run_change_weapon
  end
  def item_max
    return 3
  end
  def process_cursor_move
    return unless cursor_movable?
    last_index = @index
    cursor_down (Kboard.keyboard(0x32))  if Kboard.keyboard(0x32)
    cursor_up   (Kboard.keyboard(0x31))    if Kboard.keyboard(0x31)
    Sound.play_cursor if @index != last_index
  end
end[/pre]

梦石
0
星屑
19426
在线时间
3082 小时
注册时间
2013-1-11
回帖
1207
发表于 2017-10-4 08:46:18 | 显示全部楼层
本帖最后由 张咚咚 于 2017-10-4 13:11 编辑

这是什么写法,类里直接用self不久行了,而且不知为什么感觉这种写法很有bug的感觉。。
算了,对于会出错的地方你直接加上这一句判断就可以简单暴力的解决了... QQ截图20171004131034.png

点评

这个实例变量很晕,我认为普通变量只在类的某一个方法中有效,实例变量在一个类中有用,全局变量哪里都可以  发表于 2017-10-4 19:47
我以为一直隐藏窗口,虽然是隐藏,但也是存在着,会占资源,倒不如使用时调出,用完dispose掉。和你的想法正好相反。  发表于 2017-10-4 19:41
胡搞,搞定了  发表于 2017-10-4 19:39
而且如果new的窗口多的话,new、dispose、new、dispose,很占资源吧...  发表于 2017-10-4 19:22
你可以参考默认系统的写法,都是写new好,然后在控制显示隐藏什么的,最后在释放,如果只调用的时候在new,要麻烦死...  发表于 2017-10-4 19:22
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部