Project1

标题: 怎么使说明文字换行 [打印本页]

作者: 玄月    时间: 2009-5-11 00:39
标题: 怎么使说明文字换行
就是上面写一段下面写一段……,数据库里面可以用逗号隔开判定……
作者: 八云紫    时间: 2009-5-11 00:43
弄错了,屏蔽~
作者: hitlerson    时间: 2009-5-11 00:56
仅做参考

  def talk_view_update(str="")
    return if str == ""
    x = 0
    @line += 1
    move_line
    @talkview[@line].bitmap.font.size = 12
    # 有等待显示的文字的情况下
    if str != nil
      text = str.dup
      # 限制文字处理
      begin
        last_text = text.clone
        text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
      end until text == last_text
      text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
        $game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
      end
      # 为了方便、将 "\\\\" 变换为 "\000"
      text.gsub!(/\\\\/) { "\000" }
      # "\\C" 变为 "\001" に、"\\G" 变为 "\002"
      text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
      text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\002[#{$1}]" }
      # "\P" 变为 "\003"
      text.gsub!(/\\[Pp]/) { "\003" }
      # c 获取 1 个字 (如果不能取得文字就循环)
      while ((c = text.slice!(/./m)) != nil)
        # \\ 的情况下
        if c == "\000"
          # 还原为本来的文字
          c = "\\"
        end
        # \C[n] 的情况下
        if c == "\001"
          # 更改文字色
          text.sub!(/\[([0-9]+)\]/, "")
          color = $1.to_i
          if color >= 0 and color <= 7
            @talkview[@line].bitmap.font.color = text_color(color)
          end
          # 下面的文字
          next
        end
        # \S[n] 的情况下
        if c == "\002"
          # 更改字体大小
          text.sub!(/\[([0-9]+)\]/, "")
          size = $1.to_i > 12 ? 12 : $1.to_i
          @talkview[@line].bitmap.font.size = size
        end
        # 图片的情况下
        if c == "\003"
          pic_name = ''
          while ((cha = text.slice!(/./m)) != ']')
            next if cha == '['
            pic_name += cha
          end
          pic = RPG::Cache.picture(pic_name)
          #@talkview[t].y += pic.height if @talkview[t].y + pic.height > 480
          @talkview[@line].bitmap.blt(x + 4, @talkview[@line].y+1, pic, Rect.new(0, 0, pic.width, pic.height))
          x += pic.width
          next
        end
        if x > 150-12
          # y 加 1
          @line += 1
          x = 0
          move_line
          # 下面的文字
          next
        end
        # 另起一行文字的情况下
        if c == "\n"
          # y 加 1
          @line += 1
          x = 0
          # 下面的文字
          next
        end
        # 描绘文字
        @talkview[@line].bitmap.draw_text(4 + x, 1, 20, 12, c)
        # x 为要描绘文字的加法运算
        x += @talkview[@line].bitmap.text_size(c).width
      end
      
    end

  end
作者: END66RPG    时间: 2009-5-11 01:32
不知道
作者: goahead    时间: 2009-5-12 17:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: 玄月    时间: 2009-5-13 18:26
第一种我回去试试,不过最近也有点思路了
作者: 玄月    时间: 2009-5-14 06:58
不好意思,都没用上,最终自己解决了




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