【问题标题】:How do I approach rendering text in a fully sprite based game? (ActionScript 3)如何在完全基于精灵的游戏中渲染文本? (动作脚本 3)
【发布时间】:2012-01-16 12:37:45
【问题描述】:

我创建了一个Canvas 类,它有一个包含多个CanvasEntity 实例的数组。其中每一个都有一个skin 属性,它是对先前创建的BitmapData 实例的引用,代表一些可以使用的图形。

Canvas 每帧都会遍历此列表以执行渲染:

  1. lock()画布
  2. 使用fillRect() 清除画布。
  3. 遍历上述数组并在每个实例的皮肤属性上使用copyPixels()
  4. unlock() 画布。

这一切都很好,但现在我有点不确定以相同方式呈现文本的最佳方法。

我是否需要制作一个包含所有字形的精灵表,就像我为任何其他对象的所有帧所做的那样?或者有没有更简单的方法来创建代表这些的BitmapData

制作精灵表似乎很痛苦,因为需要有代表每个要渲染的字形的单独对象。

到目前为止,我将其作为精灵表:

【问题讨论】:

    标签: actionscript-3 text bitmap sprite


    【解决方案1】:

    您不需要为每个角色使用单独的对象。如果你想要一个低成本的文本显示,有一个扩展 CanvasEntity 的类并在构造函数中接受一个字符串,将相关数据从 spritesheet 复制到皮肤。

    【讨论】:

      【解决方案2】:

      一般的游戏不会包含那么多文字。它通常不是需要大量优化的性能关键部分。你可以创建一个普通的精灵,添加一个带有你需要的文本和样式的TextField,然后将该图形复制到画布上。如果您需要更频繁地使用文本图形,可能会对其进行调整。

      如果您想要一些动画(逐个字符出现-带有令人讨厌的打字机声音效果),您可能应该使用精灵表。但是您可以使用相同的技术动态创建一次。循环遍历字体的每个可能字符,将其绘制到工作表上。

      【讨论】:

        猜你喜欢
        • 2014-02-11
        • 1970-01-01
        • 2015-09-10
        • 1970-01-01
        • 1970-01-01
        • 2021-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多