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

Project1

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

[已经解决] 请教关于描绘颜色转义符的相关问题。

[复制链接]

Lv6.析梦学徒

老鹰

梦石
40
星屑
33422
在线时间
6553 小时
注册时间
2012-5-26
帖子
3178

极短24评委极短23参与极短22参与极短21评委老司机慢点开短篇十吟唱者组别冠军开拓者剧作品鉴家

1
发表于 2018-4-7 22:53:01 | 显示全部楼层
本帖最后由 百里_飞柳 于 2018-4-7 22:54 编辑
  1. #--------------------------------------------------------------------------
  2. # ● 逐个字开始描绘
  3. #--------------------------------------------------------------------------
  4. def play_onetext
  5.   tx = @text_array.shift  #获取并删除文字数组第一个字。
  6.   cw = contents.text_size(tx).width #获取描绘这个字需要的宽度。
  7.   if @text_pos[:x] + cw > Helpset::Width_MAX   #如果描绘的坐标X加上宽度超过 xxx ,就换行。
  8.       @text_pos[:x] = 0
  9.       @text_pos[:y] += 24    #假如行距是 32 。
  10.   end
  11.   self.contents.draw_text(@text_pos[:x], @text_pos[:y], cw, 32, tx)  #描绘这个文字。
  12.   @text_pos[:x] += cw   #宽度累加。
  13. end
复制代码

你这里是把文字拆成了一个个的字符并进行绘制,而如果你想加入转义符的话,那就再在这之间加入个判定
以及,你这个split后的 \  符号变成什么了,是 \\ 还是 \e ,如果字符串是 '' 形式,则为 \\,否则我ruby里测试是自动替换成 \e
  1. #--------------------------------------------------------------------------
  2. # ● 逐个字开始描绘
  3. #--------------------------------------------------------------------------
  4. def play_onetext
  5.   tx = @text_array.shift  #获取并删除文字数组第一个字。

  6.   if tx == '\e' # 此处修改成你字符串中 \ 符号变更
  7.     # 读取出转义符
  8.     t_ = ''; code = ""
  9.     while t_ != '['
  10.       code += t_
  11.       t_ = @text_array.shift
  12.     end
  13.     # 读取出方括号内参数
  14.     t_ = ''; param = ""
  15.     while t_ != ']'
  16.       param += t_
  17.       t_ = @text_array.shift
  18.     end
  19.     # 分析
  20.     case code
  21.     when "c"
  22.       self.contents.font.color = text_color(param.to_i)
  23.     end
  24.     return # 防止绘制转义符
  25.   end

  26.   cw = contents.text_size(tx).width #获取描绘这个字需要的宽度。
  27.   if @text_pos[:x] + cw > Helpset::Width_MAX   #如果描绘的坐标X加上宽度超过 xxx ,就换行。
  28.       @text_pos[:x] = 0
  29.       @text_pos[:y] += 24    #假如行距是 32 。
  30.   end
  31.   self.contents.draw_text(@text_pos[:x], @text_pos[:y], cw, 32, tx)  #描绘这个文字。
  32.   @text_pos[:x] += cw   #宽度累加。
  33. end
复制代码

当然这只是抛砖引玉,只考虑了有[]传入参数的转义符,具体你可以自己尝试,仿照默认的window message绘制也可以

评分

参与人数 2星屑 +120 +1 收起 理由
正太君 + 120 认可答案
文雅夕露 + 1 谢谢指导,我去试试看

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-4 17:20

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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