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

Project1

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

[已经解决] [脚本问题]字符串中不能用控制码换行!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2008-12-23
帖子
35
跳转到指定楼层
1
发表于 2015-1-23 22:35:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我在脚本中这样写的:
@introduce_window.set_text("欢迎来到我的第一个窗口!\n这是我第一个脚本。",0)
其中使用了\n控制码来换页
游戏里却是这样的。

我尝试着把字符串代入变量里用,类似如此:
a="欢迎来到我的第一个窗口!\n这是我第一个脚本。"
@introduce_window.set_text(a,0)
但还是无效,无法换行,一个口摆在那里。

@introduce_window是一个窗口的类,里面关于显示文字的定义是这样的:
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(0, 0, 500, 32, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
(其实就是从Help里拉了一段……)

求助,怎么样才能让这段字符串能够用控制符换行?

另外:pan.baidu.com/s/1i37p4rV
这是那个工程,希望有了这个可以更快解决问题。(其实那工程里还有一个问题没解决,不过现在就不麻烦各位了。)
在标题界面进入第三个选项即可进入问题窗口
我的游戏我自己做

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21604
在线时间
9411 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

2
发表于 2015-1-24 00:02:05 | 只看该作者
忽然发现我在贴吧回复过一遍……


一直用的是VA,没用过XP,因为不知道XP应该怎么处理所以按照VA描绘文字的方式重新修改了你的Window_introduce,你自己看看吧
  1. class Window_introduce < Window_Base
  2.   def initialize
  3.     super(80,80,640-160,480-160)
  4.     self.back_opacity = 160
  5.     self.opacity = 160
  6.     self.contents_opacity = 255
  7.     self.contents = Bitmap.new(width - 32, height - 32)
  8.   end  
  9.   def set_text(text, align = 0)
  10.     if text != @text or align != @align      
  11.       self.contents.clear
  12.       self.contents.font.color = normal_color      
  13.       # 获取描绘区域的属性
  14.       # x,y:当前文字描绘的位置
  15.       # width,height:描绘文字区域的宽度和高度
  16.       # new_x:每行文字的开始x坐标
  17.       pos = {
  18.         :x => 0,:y => 0,
  19.         :new_x => 0,:width => 500,:height => 32,
  20.       }
  21.       # 按照顺序依次描绘文字
  22.       text.scan(/./).each {|c| process_character(c,pos) }
  23.       @text,@align = text,align      
  24.     end
  25.     self.visible = true
  26.   end
  27.   def process_character(c,pos)   
  28.     case c
  29.     # 若文字为“/”则换行
  30.     when '/'
  31.       pos[:x] = pos[:new_x]
  32.       pos[:y] += pos[:height]
  33.     # 处理正常文字
  34.     else
  35.       # 获取文字大小
  36.       size = self.contents.text_size(c)
  37.       # 描绘文字
  38.       self.contents.draw_text(pos[:x],pos[:y],pos[:width],pos[:height], c)
  39.       # 计算下一个文字的描绘位置
  40.       pos[:x] += size.width
  41.     end
  42.   end
  43. end
复制代码

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

3
发表于 2015-1-24 09:12:12 | 只看该作者
这玩意果然还是有点用处的:
https://rpg.blue/thread-374240-1-3.html

点评

xp的slice好像是按照字节进行切割的,如果不借助正则表达式还真是会出问题  发表于 2015-1-24 13:35
多谢~  发表于 2015-1-24 13:15
为什么xp字符串slice[0,1]出来的东西那么奇怪?  发表于 2015-1-24 13:15
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
28 小时
注册时间
2008-12-23
帖子
35
4
 楼主| 发表于 2015-1-24 13:12:34 | 只看该作者
喵呜喵5 发表于 2015-1-24 00:02
忽然发现我在贴吧回复过一遍……

有效了!又学到了一些东西,谢谢了!
我的游戏我自己做
回复 支持 反对

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
5
发表于 2015-1-24 15:27:09 | 只看该作者
如果只是单纯的文字的话可以考虑用each_line或者split("\n")来分别画每一行
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-11 21:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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