Project1

标题: “关联帮助窗口”脚本疑问(已修改) [打印本页]

作者: 恐惧剑刃    时间: 2013-7-23 21:02
标题: “关联帮助窗口”脚本疑问(已修改)
本帖最后由 恋′挂机 于 2013-7-24 09:21 编辑

默认脚本Scene_Item中有这么一行(忽略注释)
  1.     # 关联帮助窗口
  2.     @item_window.help_window = @help_window
复制代码
为什么这一句脚本可以把窗体和帮助关联起来呢?
感谢各位大大!

各位大大,我昨天关电脑的时候,突然发现我问的问题连我“自己”都看不明白!!!
是这样的,
  1.     # 关联帮助窗口
  2.     @item_window.help_window = @help_window
复制代码
在它的父类Window_Selectable有这么一个方法help_window=
  1.   def help_window=(help_window)
  2.     @help_window = help_window
  3.     # 刷新帮助文本 (update_help 定义了继承目标)
  4.     if self.active and @help_window != nil
  5.       update_help
  6.     end
  7.   end
复制代码
  1. @item_window.help_window = @help_window
复制代码
所以这句就是,@item_window调用help_window=这个方法并且带入参数@help_window
但是
  1. @help_window = help_window
复制代码
这句如何理解呢?每个类的@help_window不是不能共享么
作者: 弗雷德    时间: 2013-7-23 22:34
在这句脚本之上还有一句创建帮助窗口,大概像:@help_window =  Window_Help.new 之类
而@item_window.help_window = @help_window 所关联的便是之前创建的那个帮助窗口。
作者: 恐惧剑刃    时间: 2013-7-24 09:09
人工“置顶”
作者: 芯☆淡茹水    时间: 2013-7-24 09:14
本帖最后由 芯☆淡茹水 于 2013-7-24 12:01 编辑

去看看 Window_Item , Window_Skill ,,,等的最下面,
  1. def update_help
  2.     @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  3.   end
复制代码
父类 Window_Selectable 定义好了 @help_window  以及其写入的方法,子类 Window_Item , Window_Skill ,,,等直接调用。

在 Arrow_Base 里也是同样的情况。

@item_window.help_window = @help_window    和  @help_window = help_window

这两个  @help_window    是不一样的。
作者: 芯☆淡茹水    时间: 2013-7-24 09:30
@help_window = Window_Help.new
@item_window.help_window = @help_window

所以,不要被两个 help_window 给迷惑了。举个不太恰当的例子:
@atk = 100
$game_actors[1].atk = @atk

这两个的道理还是差不多的。




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