|
默认的battlelog不是一行行绘制的,而且将需要显示的文字全部存入一个数组,再统一按照所有行数绘制出背景,绘制出文字
当有新的文字需要显示时,是先把文字加入数组最后一行,清除之前的东西,重新统一绘制
所以如果要改成每一行都是不同的长度的话,可以改成存入的是 [文字串,背景宽度] 的数组,再绘制背景时利用这个宽度去绘制
- #==============================================================================
- # 战斗信息窗口背景阴影适应字宽度
- # by 老鹰
- #------------------------------------------------------------------------------
- # ※已测试
- # -直接修改了默认 Window_BattleLog 中的文字存储数组
- # -由 text 的数组 变更为 [text, text_width] 的数组
- # -请放在其他修改了BattleLog的脚本前,默认若无宽度记录,取窗口宽度
- #==============================================================================
- class Window_BattleLog < Window_Selectable
- #--------------------------------------------------------------------------
- # ● 添加文字
- #--------------------------------------------------------------------------
- def add_text(text)
- bitmap = Bitmap.new(1,1)
- rect = bitmap.text_size(text) #此处获取文字显示的矩形 注意:未排除转义符的宽度
- #rect.x += 1 #此处可取消注释以调整背景的xy坐标
- #rect.y += 1
- @lines.push([text, rect.width]) #此处调节rect.width的传入值可调整宽度
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 替换文字
- # 替换最后一段文字。
- #--------------------------------------------------------------------------
- def replace_text(text)
- @lines.pop
- add_text(text)
- end
- #--------------------------------------------------------------------------
- # ● 获取最下行的文字
- #--------------------------------------------------------------------------
- def last_text
- @lines[-1][0]
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- draw_background
- contents.clear
- @lines.size.times {|i| draw_line(i) }
- end
- #--------------------------------------------------------------------------
- # ● 绘制背景
- #--------------------------------------------------------------------------
- def draw_background
- @back_bitmap.clear
- @lines.size.times do |i|
- @back_bitmap.fill_rect(back_rect(i), back_color)
- end
- end
- #--------------------------------------------------------------------------
- # ● 获取背景的矩形
- #--------------------------------------------------------------------------
- def back_rect(line_number)
- temp = @lines[line_number][1] == nil ? width : @lines[line_number][1]
- Rect.new(0, padding + line_number * line_height, temp, line_height)
- end
- #--------------------------------------------------------------------------
- # ● 绘制行
- #--------------------------------------------------------------------------
- def draw_line(line_number)
- rect = item_rect_for_text(line_number)
- contents.clear_rect(rect)
- draw_text_ex(rect.x, rect.y, @lines[line_number][0])
- end
- end
复制代码 |
评分
-
查看全部评分
|