如何在完全基于精灵的游戏中渲染文本? (动作脚本 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)的主要内容,如果未能解决你的问题,请参考以下文章

高分求教按键精灵2个脚本代码,即颜色符合执行鼠标动作。

cocos2d-x学习之路——精灵与动作

按键精灵

什么是游戏脚本

精灵用黑色代替透明度

使用 C# 在 SWF 中编辑 Sprite 变量