Project1

标题: [难以理解的脚本]Window_Help的自动换行 [打印本页]

作者: timiesea    时间: 2015-6-27 23:58
标题: [难以理解的脚本]Window_Help的自动换行
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Help
  4. #------------------------------------------------------------------------------
  5. #  显示特技和物品等的说明、以及角色状态的窗口
  6. #==============================================================================

  7. class Window_Help < Window_Base
  8.   #--------------------------------------------------------------------------
  9.   # ● 设置内容(窗口宽度为516,文字内容超过则自动换行)
  10.   # 字符串下标从0开始 到 长度 - 1
  11.   # 通过text_size(text).width获取指定文本的显示宽度
  12.   #--------------------------------------------------------------------------
  13.   def set_text(text)
  14.     tmp = "";#最终拼凑而成的文本
  15.     bool = false;#记录是否曾经换行,如果已经换行则不再进行二次换行,因为只有2行
  16.     if text != @text#如果已经在显示的文本不和新的文本一致,则进行设置
  17.       l = text.length - 1;#获取新文本的长度,并减去1用来循环迭代
  18.       for i in 0..l do#进行循环,对字符串的每一个字符进行迭代
  19.         if text[i] != "\r" and text[i] != "\n" then#跳过文本中的换行符和回车符
  20.           if !bool then#如果没有进行过换行才进行计算
  21.             tmpw = text_size(tmp).width;#已经处理好的字符串的宽度
  22.             textw = text_size(text[i]).width;#下一个字符的宽度
  23.             w = tmpw + textw;#新的字符串总宽度
  24.             if w <= 516 then#如果文本的宽度没有超过516,还能显示下一个字符
  25.               tmp = tmp + text[i];#进行追加
  26.             else#如果已经显示不下
  27.               tmp = tmp + "\r" + "\n" + text[i];#进行换行后追加
  28.               bool = true;#表示已经换过行了
  29.             end
  30.           else#如果已经换过行了。
  31.             tmp = tmp + text[i];#进行追加
  32.           end
  33.         end
  34.       end
  35.       @text = tmp;#返回结果
  36.       refresh#进行刷新
  37.     end
  38.   end
  39. end
复制代码
无论描述的内容是否有换行,都会强制这么转换




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1