如何在完全基于精灵的游戏中渲染文本? (动作脚本 3)
Posted
技术标签:
【中文标题】如何在完全基于精灵的游戏中渲染文本? (动作脚本 3)【英文标题】:How do I approach rendering text in a fully sprite based game? (ActionScript 3) 【发布时间】:2012-01-16 12:37:45 【问题描述】:我创建了一个Canvas
类,它有一个包含多个CanvasEntity
实例的数组。其中每一个都有一个skin
属性,它是对先前创建的BitmapData
实例的引用,代表一些可以使用的图形。
Canvas
每帧都会遍历此列表以执行渲染:
lock()
画布
使用fillRect()
清除画布。
遍历上述数组并在每个实例的皮肤属性上使用copyPixels()
。
unlock()
画布。
这一切都很好,但现在我有点不确定以相同方式呈现文本的最佳方法。
我是否需要制作一个包含所有字形的精灵表,就像我为任何其他对象的所有帧所做的那样?或者有没有更简单的方法来创建代表这些的BitmapData
?
制作精灵表似乎很痛苦,因为需要有代表每个要渲染的字形的单独对象。
到目前为止,我将其作为精灵表:
【问题讨论】:
【参考方案1】:您不需要为每个角色使用单独的对象。如果你想要一个低成本的文本显示,有一个扩展 CanvasEntity 的类并在构造函数中接受一个字符串,将相关数据从 spritesheet 复制到皮肤。
【讨论】:
【参考方案2】:一般的游戏不会包含那么多文字。它通常不是需要大量优化的性能关键部分。你可以创建一个普通的精灵,添加一个带有你需要的文本和样式的TextField
,然后将该图形复制到画布上。如果您需要更频繁地使用文本图形,可能会对其进行调整。
如果您想要一些动画(逐个字符出现-带有令人讨厌的打字机声音效果),您可能应该使用精灵表。但是您可以使用相同的技术动态创建一次。循环遍历字体的每个可能字符,将其绘制到工作表上。
【讨论】:
以上是关于如何在完全基于精灵的游戏中渲染文本? (动作脚本 3)的主要内容,如果未能解决你的问题,请参考以下文章