设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 6310|回复: 3
打印 上一主题 下一主题

[已经解决] 如何讓字串自動換行

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
78 小时
注册时间
2011-6-29
帖子
16
跳转到指定楼层
1
发表于 2012-2-1 10:52:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 wix3000 于 2012-2-1 16:33 编辑

如題,想做個多行的道具說明
但是不知道該如何讓字串自動換行。
難道是要一行一行用draw_text嗎?

Lv1.梦旅人

梦石
0
星屑
105
在线时间
5250 小时
注册时间
2011-10-7
帖子
1885

开拓者贵宾

2
发表于 2012-2-1 12:30:01 | 只看该作者
  1. class Bitmap
  2.   WLH = 24
  3.   FWLH = WLH + 0.0
  4.   def draw_text_autoline_plus(x,y,width,height,text)
  5.     all_size = text_size(text)
  6.     lines = all_size.width / (width + 0.0)
  7.     only_lines = height / FWLH
  8.     cut = only_lines / lines
  9.     cut = 1 if cut > 1
  10.     ox = x
  11.     oy = y
  12.     loop do
  13.       c = text.slice!(/./m)
  14.       break if c == nil
  15.       rect = text_size(c)
  16.       if ox + rect.x * cut > x + width
  17.         ox = x
  18.         oy += WLH
  19.         if oy > y + height
  20.           print "在执行draw_text_autoline_plus时光荣壮烈= =b"
  21.           return
  22.         end
  23.       end
  24.       draw_text(ox,oy,rect.width * cut,WLH,c,1)
  25.       ox += rect.width * cut
  26.     end
  27.   end
  28. end
复制代码
来自:http://rpg.blue/thread-131213-1-1.html
经测试VA可用
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
400 小时
注册时间
2005-10-24
帖子
634
3
发表于 2012-2-1 12:42:18 | 只看该作者
修改RGSS3 Window_Base.draw_text_ex() 版本

  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_Base
  4. #------------------------------------------------------------------------------
  5. #  游戏中所有窗口的父类
  6. #==============================================================================

  7. class Window_Base < Window
  8.   #--------------------------------------------------------------------------
  9.   # ● 绘制带有控制符的文本内容
  10.   #   如果传递了width参数的话,会自动换行
  11.   #--------------------------------------------------------------------------
  12.   def draw_text_ex(x, y, text, width = nil)
  13.     reset_font_settings
  14.     text = convert_escape_characters(text)
  15.     pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(text)}
  16.     if width != nil
  17.       pos[:width] = width
  18.     end
  19.     process_character(text.slice!(0, 1), text, pos) until text.empty?
  20.   end
  21.   #--------------------------------------------------------------------------
  22.   # ● 文字的处理
  23.   #     c    : 文字
  24.   #     text : 绘制处理中的字符串缓存(字符串可能会被修改)
  25.   #     pos  : 绘制位置 {:x, :y, :new_x, :height}
  26.   #--------------------------------------------------------------------------
  27.   def process_character(c, text, pos)
  28.     case c
  29.     when "\r"   # 回车
  30.       return
  31.     when "\n"   # 换行
  32.       process_new_line(text, pos)
  33.     when "\f"   # 翻页
  34.       process_new_page(text, pos)
  35.     when "\e"   # 控制符
  36.       process_escape_character(obtain_escape_code(text), text, pos)
  37.     else        # 普通文字
  38.       text_width = text_size(c).width
  39.       if pos[:width] != nil && pos[:x] - pos[:new_x] + text_width > pos[:width]
  40.         process_new_line(text, pos)
  41.       end
  42.       process_normal_character(c, pos)
  43.     end
  44.   end
  45. end
复制代码

点评

有用了 謝謝你。  发表于 2012-2-1 16:33
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

4
发表于 2012-2-1 12:45:41 | 只看该作者
    def onTextareaRender(sender,e)
      bitmap=e.get(:bitmap)
      bitmap.clear
      bitmap.font=@font
      @x=0
      @y=0
      @maxheight=0
      #@text.each_byte{|b|
      for i in [email protected]
        b=@text
        if b!="\r"
          @size=bitmap.text_size(b)
          @maxheight = 0 if @maxheight.nil?
          @maxheight=[@maxheight,@size.height].max
          if (@[email protected]>@rect.width) or b=="\n"
            @x=0
            @y+=@maxheight
            @maxheight=0
          end
          bitmap.draw_text(@x,@y,@size.width*2+1,@size.height+1,b) if b!="\n"
          @[email protected] if b!="\n"
        end
      end
      #}
      return false
    end
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-21 23:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表