class Window_Help2 < Window_Base
#--------------------------------------------------------------------------
# * 物件初始化
#--------------------------------------------------------------------------
def initialize
super(0, 0, 544, WLH + 48)
self.opacity = 0
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
# text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
# loop do
# c = text.slice!(/./m)
# case c
# when nil
# break
# when "|"
# @text_pos[:x] = 0
# @text_pos[:y] += 24
# when "\x01"
# text.sub!(/\[([0-9]+)\]/, "")
# self.contents.font.color = text_color($1.to_i)
# next
# else
# self.contents.font.color = normal_color
# end
# end
# 初始化文本数组
@text_array = text.split("")
#记录文本位置
@text_pos = {:x=>0,:y=>0}
@text = text
@align = align
@actor = nil
end
self.visible = true
end
#--------------------------------------------------------------------------
# ● 逐个字开始描绘
#--------------------------------------------------------------------------
def play_onetext
tx = @text_array.shift #获取并删除文字数组第一个字。
cw = contents.text_size(tx).width #获取描绘这个字需要的宽度。
if @text_pos[:x] + cw > Helpset::Width_MAX #如果描绘的坐标X加上宽度超过 xxx ,就换行。
@text_pos[:x] = 0
@text_pos[:y] += 24 #假如行距是 32 。
end
self.contents.draw_text(@text_pos[:x], @text_pos[:y], cw, 32, tx) #描绘这个文字。
@text_pos[:x] += cw #宽度累加。
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def update
play_onetext if @text_array && @text_array.size > 0 && Graphics.frame_count % Helpset::Move == 0
end
end