加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
也不知道该怎么说明比较好。
就是在一个新的帮助窗口使用转移符描绘部分文字颜色。
但是这个帮助窗口已经是按字描绘的。
就是想让逐个字描绘的效果跟更改颜色的效果共存。
脚本如下:
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
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
这是没加转义符的例图:
但为什么加了转义符之后帮助窗口就不显示内容了?
难道是我的写法出了什么问题吗?
请前辈们帮助我,指导我,谢谢。
|