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

Project1

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

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
跳转到指定楼层
1
发表于 2014-3-5 19:07:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

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

RUBY 代码复制
  1. def help_window=(help_window)
  2.     @help_window = help_window
  3.     call_update_help
  4.     refresh
  5.   end

RUBY 代码复制
  1. def initialize
  2.     super(0,80)
  3.   end

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

2
发表于 2014-3-5 19:51:04 | 只看该作者
最简单粗暴的方法,进入这个scene的时候直接手动set_text......
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
3
 楼主| 发表于 2014-3-5 20:06:59 | 只看该作者
喵呜喵5 发表于 2014-3-5 19:51
最简单粗暴的方法,进入这个scene的时候直接手动set_text......

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

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

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

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3298
在线时间
1120 小时
注册时间
2009-4-15
帖子
815
5
 楼主| 发表于 2014-3-5 20:26:09 | 只看该作者
喵呜喵5 发表于 2014-3-5 20:19
说起来帮助窗口哪来的光标移动方法......

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

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

6
发表于 2014-3-14 17:44:42 | 只看该作者
本帖最后由 喵呜喵5 于 2015-12-29 09:51 编辑

完全不理解你自己究竟哪里弄错了,于是自己写了一个这样的脚本……
【看到你的新帖才想起来这个旧帖还没有回复
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2. # ● 选项窗口的类
  3. #--------------------------------------------------------------------------
  4. class Window_M5Command < Window_Command
  5.   #--------------------------------------------------------------------------
  6.   # ● 载入窗口以及选项帮助窗口
  7.   #--------------------------------------------------------------------------
  8.   def initialize
  9.     super(0, fitting_height(2))
  10.     @m5_command_help = Window_Help.new
  11.     @m5_command_help.set_text(current_ext)
  12.   end
  13.   #--------------------------------------------------------------------------
  14.   # ● 生成选项列表
  15.   #--------------------------------------------------------------------------
  16.   def make_command_list
  17.     add_command("选项1",  :cho1, true, "选择了选项1")
  18.     add_command("选项2",  :cho2, true, "选择了选项2")
  19.     add_command("选项3",  :cho3, true, "选择了选项3")
  20.     add_command("选项4",  :cho4, true, "选择了选项4")
  21.   end
  22.   #--------------------------------------------------------------------------
  23.   # ● 释放选项帮助窗口
  24.   #--------------------------------------------------------------------------
  25.   def dispose
  26.     super
  27.     @m5_command_help.dispose
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 如果光标移动时,更新帮助窗口
  31.   #--------------------------------------------------------------------------
  32.   def process_cursor_move
  33.     last_index = @index
  34.     super
  35.     @m5_command_help.set_text(current_ext) if @index != last_index
  36.   end  
  37. end
  38. #--------------------------------------------------------------------------
  39. # ● Scene
  40. #--------------------------------------------------------------------------
  41. class Scene_Test < Scene_MenuBase
  42.   def start
  43.     super   
  44.     @command_window = Window_M5Command.new
  45.   end
  46. end
  47. class << SceneManager
  48.   def first_scene_class
  49.     $BTEST ? Scene_Battle : Scene_Test
  50.   end
  51. end

点评

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

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

7
发表于 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
复制代码
这个窗口能这么写吗?要这么写?
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

8
发表于 2014-4-19 16:03:29 | 只看该作者
VIPArcher 发表于 2014-4-19 15:30
这个窗口能这么写吗?要这么写?


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

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

9
发表于 2014-4-19 18:29:44 | 只看该作者
喵呜喵5 发表于 2014-4-19 16:03
首先你先得告诉我你的帮助窗口那部分代码写好了吗?

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

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21631
在线时间
9415 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

10
发表于 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
复制代码
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 03:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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