| 自动替换其实思路很简单w提供一下我个人觉得比较简单的思路
 
 首先呢,因为图片正好是做成0123456789的等距格式,所以很方便将其分割开来显示。
 所以考虑在Window_Base里写
 
 def draw_picture_number(name, index, x, y)    bitmap = Cache.system(name)    rect = Rect.new(index % 10 * 15, index / 10 * 15, 15, 15)    contents.blt(x, y, bitmap, rect, 255)    bitmap.dispose  end
def draw_picture_number(name, index, x, y) 
    bitmap = Cache.system(name) 
    rect = Rect.new(index % 10 * 15, index / 10 * 15, 15, 15) 
    contents.blt(x, y, bitmap, rect, 255) 
    bitmap.dispose 
  end 
那么这样就分割开来了,index为0的时候就会绘制0这部分,为9的时候就会绘制9这部分...
 而15则是间距问题,可以随便改的,我是对应自己使用的图片来定制w
 接下来则是关键部分,Window_Base中的process_normal_character(c, pos)方法中的参数c固定是一个字符
 那么就去匹配这个c,如果为数字的话,就执行draw_picture_number
 所以就是
 
 class Window_Base  def process_normal_character(c, pos)    text_width = text_size(c).width    if c =~ /(\d)/      draw_picture_number("Number", $1[0].to_i, pos[:x], pos[:y])    else      draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c)    end    pos[:x] += text_width  end  def draw_picture_number(name, index, x, y)    bitmap = Cache.system(name)    rect = Rect.new(index % 10 * 15, index / 10 * 15, 15, 15)    contents.blt(x, y, bitmap, rect, 255)    bitmap.dispose  endend
class Window_Base 
  def process_normal_character(c, pos) 
    text_width = text_size(c).width 
    if c =~ /(\d)/ 
      draw_picture_number("Number", $1[0].to_i, pos[:x], pos[:y]) 
    else 
      draw_text(pos[:x], pos[:y], text_width * 2, pos[:height], c) 
    end 
    pos[:x] += text_width 
  end 
  def draw_picture_number(name, index, x, y) 
    bitmap = Cache.system(name) 
    rect = Rect.new(index % 10 * 15, index / 10 * 15, 15, 15) 
    contents.blt(x, y, bitmap, rect, 255) 
    bitmap.dispose 
  end 
end 
 
   
   
   
   
   |