| 本帖最后由 余烬之中 于 2013-11-3 13:48 编辑 
 其实这是我计划上周做的项目…………可是因为种种原因,只做了一半就拖到了现在……
 ——————
 @喵呜喵5 不是自动换行……那个早就实现了【书籍系统 http://rpg.blue/thread-337128-1-1.html 】
 我现在要做的是调用精灵(感觉我学的很没有章法……因为也没有什么教程,前不久才知道这是ruby…………)
 在Window_Base里有(这两个不是重点):
 
 #--------------------------------------------------------------------------  # ● 获取行高  #--------------------------------------------------------------------------  def line_height    return 24  end
#-------------------------------------------------------------------------- 
  # ● 获取行高 
  #-------------------------------------------------------------------------- 
  def line_height 
    return 24 
  end 
 #--------------------------------------------------------------------------  # ● 计算窗口显示指定行数时的应用高度  #--------------------------------------------------------------------------  def fitting_height(line_number)    line_number * line_height + standard_padding * 2  end
#-------------------------------------------------------------------------- 
  # ● 计算窗口显示指定行数时的应用高度 
  #-------------------------------------------------------------------------- 
  def fitting_height(line_number) 
    line_number * line_height + standard_padding * 2 
  end 
 重点在这里
 
 
 #--------------------------------------------------------------------------  # ● 计算行高  #     restore_font_size : 计算完成后是否恢复原本的字体尺寸?  #--------------------------------------------------------------------------  def calc_line_height(text, restore_font_size = true)    result = [line_height, contents.font.size].max    last_font_size = contents.font.size    text.slice(/^.*$/).scan(/\e[\{\}]/).each do |esc|      make_font_bigger  if esc == "\e{"      make_font_smaller if esc == "\e}"      result = [result, contents.font.size].max    end    contents.font.size = last_font_size if restore_font_size    result  end
#-------------------------------------------------------------------------- 
  # ● 计算行高 
  #     restore_font_size : 计算完成后是否恢复原本的字体尺寸? 
  #-------------------------------------------------------------------------- 
  def calc_line_height(text, restore_font_size = true) 
    result = [line_height, contents.font.size].max 
    last_font_size = contents.font.size 
    text.slice(/^.*$/).scan(/\e[\{\}]/).each do |esc| 
      make_font_bigger  if esc == "\e{" 
      make_font_smaller if esc == "\e}" 
      result = [result, contents.font.size].max 
    end 
    contents.font.size = last_font_size if restore_font_size 
    result 
  end 
 
 滚动文字窗口中是这样的
 
 #--------------------------------------------------------------------------  # ● 更新绘制所有内容所需的高度  #--------------------------------------------------------------------------  def update_all_text_height    @all_text_height = 1    convert_escape_characters(@text).each_line do |line|      @all_text_height += calc_line_height(line, false)    end    reset_font_settings  end
#-------------------------------------------------------------------------- 
  # ● 更新绘制所有内容所需的高度 
  #-------------------------------------------------------------------------- 
  def update_all_text_height 
    @all_text_height = 1 
    convert_escape_characters(@text).each_line do |line| 
      @all_text_height += calc_line_height(line, false) 
    end 
    reset_font_settings 
  end 
它会先调用convert_escape_characters
 所以在这个方法中加上换行就可以了(很繁琐,先绘制一遍再保存,效率更是渣,不过用起来倒不会卡,也不显得慢,如果不死认脚本,人类是察觉不到的)
 |