赞 | 3 |
VIP | 21 |
好人卡 | 10 |
积分 | 2 |
经验 | 32573 |
最后登录 | 2024-6-13 |
在线时间 | 332 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 155
- 在线时间
- 332 小时
- 注册时间
- 2013-7-6
- 帖子
- 356
|
首先我们换行习惯用/n
所以在处理字符串换行的时候要用到split
把一个字符串分割成多个字符串的数组,每个元素都是一行的文字。- def set_text(text, align = 0)
- # 如果文本和对齐方式的至少一方与上次的不同
- if text != @text or align != @align
- # 再描绘文本
- self.contents.clear
- self.contents.font.color = normal_color
- self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
- @text = text
- @align = align
- @actor = nil
- end
- self.visible = true
- end
复制代码 这是help里的显示文字部分
我们在帮助里查找到draw_text相关的如下资料:- draw_text(x, y, width, height, str[, align])
- draw_text(rect, str[, align])
- 在该位图的矩形(x,y,width,height)或 rect(Rect)中描绘字符串 str。
- 如果文本的长度超过矩形的宽度的话,则自动缩放为 60% 再描绘。
- 水平方向默认为左对齐,但是当 align 指定为 1 时为居中对齐,指定为 2 时为右对齐。垂直方向则总为居中对齐。
- 这个处理需要花费时间,尽量不要在每 1 帧中重描绘字符串。
复制代码 也就是说我们不能直接通过一个draw_text来实现多行文本。
所以我们要进行分割后循环- def set_text(text, align = 0)
- # 如果文本和对齐方式的至少一方与上次的不同
- if text != @text or align != @align
- # 再描绘文本
- a=text.split("/n")
- self.contents.clear
- self.contents.font.color = normal_color
- b=0#记录行数
- a.each do |i|#循环输出
- self.contents.draw_text(4, 32*b, self.width - 40, 32, i, align)
- b+=1
- end
- @text = text
- @align = align
- @actor = nil
- end
- self.visible = true
- end
复制代码 电脑没有电了,没进行测试- - |
评分
-
查看全部评分
|