目录
昨天我们解析的Window_Selectable里有一个可读类属性help_window,本节我们就对这个属性所属的类Window_Help进行解析。
Window_Help类代码解析
#==============================================================================
# ■ Window_Help
#------------------------------------------------------------------------------
# 特技及物品的说明、角色的状态显示的窗口。 #事实上应该加个战斗中角色状态
#==============================================================================
class Window_Help < Window_Base
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize #所以Window_Help类永远在最上方
super(0, 0, 640, 64) #宽640,高64
self.contents = Bitmap.new(width - 32, height - 32) #各留32像素位置 width=640,height=64
end
#--------------------------------------------------------------------------
# ● 设置文本
# text : 窗口显示的字符串
# align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
#--------------------------------------------------------------------------
def set_text(text, align = 0) #想不到帮助文本也可以设置对齐
# 如果文本和对齐方式的至少一方与上次的不同
if text != @text or align != @align
# 再描绘文本
self.contents.clear #清除内容
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, self.width - 40, 32, text, align) #绘制文本
@text = text
@align = align
@actor = nil
end
self.visible = true
end
#--------------------------------------------------------------------------
# ● 设置角色
# actor : 要显示状态的角色
#--------------------------------------------------------------------------
def set_actor(actor) #这个窗口是战斗时选择角色时上方出现的帮助窗口
if actor != @actor #如果actor更新了
self.contents.clear #就刷新界面
draw_actor_name(actor, 4, 0) #以下四个方法都出自Window_Base
draw_actor_state(actor, 140, 0)
draw_actor_hp(actor, 284, 0)
draw_actor_sp(actor, 460, 0)
@actor = actor
@text = nil #绘制的是角色面板所以没有文本
self.visible = true
end
end
#--------------------------------------------------------------------------
# ● 设置敌人
# enemy : 要显示名字和状态的敌人
#--------------------------------------------------------------------------
def set_enemy(enemy) #这个窗口也是如此,不过描述的是敌人
text = enemy.name
state_text = make_battler_state_text(enemy, 112, false) #生成敌人的状态
if state_text != "" #所以如果敌人无状态就只会显示名字
text += " " + state_text
end
set_text(text, 1) #直接更新文本
end
end
关于set_actor与set_enemy描绘的窗口的位置
如图所示,本类其实很简单来着。