查看: 6162|回复: 19

[已经解决] 关于help_window的刷新

[复制链接]
梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
发表于 2014-3-5 19:07:21 | 显示全部楼层 |阅读模式

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

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

×
最近自己写了个界面,界面分命令行列表,以及帮助框,帮助框用的是VA自带的那个Window_Help,然后在写脚本的时候发现个问题:
我想要的功能是:选择不同的命令行,帮助框就跟着刷新对应的文字(类似物品、技能选择时,在帮助框里可以看到物品、技能的描述),该功能已经实现,但是有个小BUG,在第一次进入Scene的时候,默认选择第一行命令行,但是此时帮助框内容为空,只有鼠标上下移动过后(移动会触发刷新),帮助框的内容才会显现出来……我无语了,所以想请大神帮看看,怎么改才可以让一切换该画面,帮助框就显示对应的匹配内容?
以下我贴上我自己写的一些关键地方,请大神帮看看问题出在哪?
[pre lang="ruby" line="1"] def refresh
    super
    @help_window.set_text("????") if @help_window
  end
  def cursor_down(wrap = false); super;refresh;end
  def cursor_up(wrap = false); super;refresh;end
  def cursor_left(wrap = false); super;refresh;end
  def cursor_right(wrap = false); super;refresh;end[/pre]
[pre lang="ruby" line="1"]def help_window=(help_window)
    @help_window = help_window
    call_update_help
    refresh
  end[/pre]
[pre lang="ruby" line="1"]def initialize
    super(0,80)
  end[/pre]

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-3-5 19:51:04 | 显示全部楼层
最简单粗暴的方法,进入这个scene的时候直接手动set_text......
回复

使用道具 举报

梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
 楼主| 发表于 2014-3-5 20:06:59 | 显示全部楼层
喵呜喵5 发表于 2014-3-5 19:51
最简单粗暴的方法,进入这个scene的时候直接手动set_text......

不可行,我跟踪过了,发现最后help_window会clear,目前没找到调用clear的地方,现在2流解决方法是放到update中,但是那个会降帧
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-3-5 20:19:47 | 显示全部楼层
tan12345 发表于 2014-3-5 20:06
不可行,我跟踪过了,发现最后help_window会clear,目前没找到调用clear的地方,现在2流解决方法是放到up ...

说起来帮助窗口哪来的光标移动方法......
回复

使用道具 举报

梦石
0
星屑
3348
在线时间
1120 小时
注册时间
2009-4-15
回帖
761
 楼主| 发表于 2014-3-5 20:26:09 | 显示全部楼层
喵呜喵5 发表于 2014-3-5 20:19
说起来帮助窗口哪来的光标移动方法......

……你没仔细看……
是命令窗口光标移动,帮助窗口更新相应内容
目前上下移动是更新了,但是刚进界面的时候,光标还没动的时候,帮助窗口为空
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-3-14 17:44:42 | 显示全部楼层
本帖最后由 喵呜喵5 于 2015-12-29 09:51 编辑

完全不理解你自己究竟哪里弄错了,于是自己写了一个这样的脚本……
【看到你的新帖才想起来这个旧帖还没有回复
[pre lang="ruby" line="1"]#--------------------------------------------------------------------------
# ● 选项窗口的类
#--------------------------------------------------------------------------
class Window_M5Command < Window_Command
  #--------------------------------------------------------------------------
  # ● 载入窗口以及选项帮助窗口
  #--------------------------------------------------------------------------
  def initialize
    super(0, fitting_height(2))
    @m5_command_help = Window_Help.new
    @m5_command_help.set_text(current_ext)
  end
  #--------------------------------------------------------------------------
  # ● 生成选项列表
  #--------------------------------------------------------------------------
  def make_command_list
    add_command("选项1",  :cho1, true, "选择了选项1")
    add_command("选项2",  :cho2, true, "选择了选项2")
    add_command("选项3",  :cho3, true, "选择了选项3")
    add_command("选项4",  :cho4, true, "选择了选项4")
  end
  #--------------------------------------------------------------------------
  # ● 释放选项帮助窗口
  #--------------------------------------------------------------------------
  def dispose
    super
    @m5_command_help.dispose
  end
  #--------------------------------------------------------------------------
  # ● 如果光标移动时,更新帮助窗口
  #--------------------------------------------------------------------------
  def process_cursor_move
    last_index = @index
    super
    @m5_command_help.set_text(current_ext) if @index != last_index
  end  
end
#--------------------------------------------------------------------------
# ● Scene
#--------------------------------------------------------------------------
class Scene_Test < Scene_MenuBase
  def start
    super   
    @command_window = Window_M5Command.new
  end
end
class << SceneManager
  def first_scene_class
    $BTEST ? Scene_Battle : Scene_Test
  end
end[/pre]

点评

删除了几行,已经不在40行了,总之记得把url代码删掉即可  发表于 2014-3-14 19:44
脚本第40行,嗯  发表于 2014-3-14 17:46

评分

参与人数 1梦石 +1 收起 理由
迷糊的安安 + 1 你是一个好人……

查看全部评分

回复

使用道具 举报

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-4-19 15:30:56 | 显示全部楼层
喵呜喵5 发表于 2014-3-14 17:44
完全不理解你自己究竟哪里弄错了,于是自己写了一个这样的脚本……
【看到你的新帖才想起来这个旧帖还没有 ...
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_EquipCommand
  4. #------------------------------------------------------------------------------
  5. #  技能画面中,选择指令(更换装备/最强装备/全部卸下)的窗口。
  6. #==============================================================================

  7. class Window_EquipCommand < Window_HorzCommand
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对象
  10.   #--------------------------------------------------------------------------
  11.   def initialize(x, y, width)
  12.     @window_width = width
  13.     super(x, y)
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 获取窗口的宽度
  17.   #--------------------------------------------------------------------------
  18.   def window_width
  19.     @window_width
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 获取列数
  23.   #--------------------------------------------------------------------------
  24.   def col_max
  25.     return 3
  26.   end
  27.   #--------------------------------------------------------------------------
  28.   # ● 生成指令列表
  29.   #--------------------------------------------------------------------------
  30.   def make_command_list
  31.     add_command(Vocab::equip2,   :equip)
  32.     add_command(Vocab::optimize, :optimize)
  33.     add_command(Vocab::clear,    :clear)
  34.   end
  35. end
复制代码
这个窗口能这么写吗?要这么写?
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-4-19 16:03:29 | 显示全部楼层
VIPArcher 发表于 2014-4-19 15:30
这个窗口能这么写吗?要这么写?


首先你先得告诉我你的帮助窗口那部分代码写好了吗?
回复

使用道具 举报

无限の剣制

梦石
0
星屑
10445
在线时间
5019 小时
注册时间
2013-2-28
回帖
4942

开拓者贵宾

发表于 2014-4-19 18:29:44 | 显示全部楼层
喵呜喵5 发表于 2014-4-19 16:03
首先你先得告诉我你的帮助窗口那部分代码写好了吗?

没有,不懂要怎么写。求指导。就是希望当光标在更换装备什么的那里,帮助窗口里刷新“更换装备”“自动装备”“全部卸下”这样。
回复

使用道具 举报

梦石
1
星屑
23241
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2014-4-19 19:10:16 | 显示全部楼层
本帖最后由 喵呜喵5 于 2015-12-29 09:50 编辑
VIPArcher 发表于 2014-4-19 18:29
没有,不懂要怎么写。求指导。就是希望当光标在更换装备什么的那里,帮助窗口里刷新“更换装备”“自动装 ...
  1. class Window_EquipCommand  
  2.   def process_cursor_move
  3.     last_index = @index
  4.     super
  5.     @help_window.set_text(help_text) if @index != last_index
  6.   end
  7.   def help_text
  8.     case @index
  9.     when 0
  10.       "更换装备"
  11.     when 1
  12.       "自动装备"
  13.     when 2
  14.       "全部卸下"
  15.     end
  16.   end
  17. end
  18. class Scene_Equip
  19.   alias m5_create_command_window create_command_window
  20.   def create_command_window
  21.     m5_create_command_window
  22.     @command_window.help_window = @help_window
  23.   end
  24. end
复制代码
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部