|  | 
| 默认的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
 | 
 评分
查看全部评分
 |