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

Project1

 找回密码
 注册会员
搜索

请教前辈们该如何数帧描绘一个文字?

查看数: 1873 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-4-6 16:00

正文摘要:

module helpset Speed = 3 end 以上的Speed是表示多少帧数描绘一个文字。 现在我想在帮助窗口里使用这个方法... 但苦于并没有一个好的思路来实现。 所以想请教各位前辈这种帧描绘一个文字是该怎么实现的? ...

回复

芯☆淡茹水 发表于 2018-4-6 18:43:58
  1. #--------------------------------------------------------------------------
  2.   def set_text(text, align = 0)
  3.     # 如果文本和对齐方式的至少一方与上次的不同
  4.     if text != @text or align != @align
  5.       self.contents.clear
  6.       self.contents.font.color = normal_color
  7.       # 初始化文本数组
  8.       @text_array = text.split("")
  9.       #记录文本位置
  10.       @text_pos = {:x=>0,:y=>0}
  11.       @text = text
  12.       @align = align
  13.       @actor = nil
  14.     end
  15.     self.visible = true
  16.   end
复制代码

点评

这功能略眼熟,难道是描述跑马灯?  发表于 2018-4-12 20:48
明白了,我检查一下是什么问题。  发表于 2018-4-6 19:13
既然物品和技能都没问题,应该不是这个的锅。  发表于 2018-4-6 19:08
感谢前辈,但不知道为什么装备界面还是不能显示帮助文字,感觉好奇怪耶...  发表于 2018-4-6 18:59
芯☆淡茹水 发表于 2018-4-6 17:21:38
这个说起来就比较麻烦,不复杂但是比较繁琐。
首先一段文字 text 需要弄成数组形式: @text_array = text.split("")
另外是间隔时间描绘,需要一个变量记录当前描绘到哪个位置了:@text_pos = {:x=>0,:y=>0}
开始描绘文字时把这俩都初始化
def 描绘文字(text)
  @text_array = text.split("")
  @text_pos = {:x=>0,:y=>0}
end
然后写一个描绘单个文字的函数
def 描绘单个文字
  tx = @text_array.shift  #获取并删除文字数组第一个字。
  cw = contents.text_size(tx).width #获取描绘这个字需要的宽度。
  if @text_pos[:x] + cw > xxx   #如果描绘的坐标X加上宽度超过 xxx ,就换行。
    @text_pos[:x] = 0
    @text_pos[:y] += 32    #假如行距是 32 。
  end
  draw_text(@text_pos[:x], @text_pos[:y], cw, 32, tx)  #描绘这个文字。
  @text_pos[:x] += cw   #宽度累加。
end

最后在 update 里面执行刷新就行了。
def update
  .........
  描绘单个文字 if @text_array && @text_array.size > 0 && Graphics.frame_count % Helpset::Speed == 0
end

评分

参与人数 2星屑 +80 +2 收起 理由
RyanBern + 80 + 1 认可答案
文雅夕露 + 1 十分感谢

查看全部评分

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

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

GMT+8, 2025-6-29 06:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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