【问题标题】:AS3: Is it possible to generate animated sprite sheets at runtime from vector?AS3:是否可以在运行时从矢量生成动画精灵表?
【发布时间】:2012-02-29 16:58:49
【问题描述】:

我想在我的 Actionscript 游戏中使用位图。

对我来说,这代表了我的工作流程发生了很大的变化,因为我一直使用矢量,但在某些情况下,位图的渲染速度确实要快得多。据我所知,我所有的游戏资源中有 90% 可以是位图。

首先,有没有什么好的工具可以将 Vector 转换为 BitmapData?库或开源实用程序?

我知道你可以只绘制 BitmapData,我会这样做,但是动画呢?笑牛的电影剪辑怎么样?如何在运行时将 MovieClip 渲染为某种位图版本?

但比这更复杂...如果您没有原始形式的 MovieClip,该怎么办?

想象一下 10000 个齿轮以与代码生成的相同速度转动。这对处理器来说是一项艰巨的工作,因此在 1 圈内将其绘制到位图上,将用 SpriteSheet 替换 10000 个齿轮。我可以摧毁齿轮,并保留 SpriteSheet。

谁能提供我可以搜索的任何资源或谷歌关键字,不确定该技术但似乎有意义?尤其是 Starling ......我的向量在某些时候将不得不变成 SpriteSheets。

谢谢。

【问题讨论】:

    标签: actionscript vector bitmapdata


    【解决方案1】:

    将影片剪辑转换为精灵表的基本过程是这样的:

    1. 选择一个影片剪辑。
    2. 获取影片剪辑的边界。您需要获取动画最宽和最高帧的宽度和高度。
    3. 获取影片剪辑的帧数。
    4. 创建一个新的位图数据对象,其宽度等于帧数乘以帧的宽度。并且高达一帧。 5 循环遍历剪辑的每一帧,并在每一帧上调用 bitmapData.draw()。确保将每一帧上绘制命令的矩阵偏移一个精灵帧的宽度。

    最终的结果将是一个单独的位图数据对象,每一帧都呈现给它。

    从那里您可以按照本教程学习 blitting。 http://www.8bitrocket.com/2008/07/02/tutorial-as3-the-basics-of-tile-sheet-animation-or-blitting/

    【讨论】:

    • 感谢您的回复!你说的很有道理,今晚我试试看。
    【解决方案2】:

    在运行时将 spritesheets 转换为位图并不是一项简单的任务,您最好在编译之前构建 spritesheets,并使用带有 blitting 引擎的框架,例如 Flixel 或 Flashpunk(我不是很熟悉和 Starling 一起,但我想这也行得通)。有几个不错的 MovieClip/SWF 到 png 转换器:

    但是,如果您打算在运行时制作 spritesheets,您可能可以重新利用一些 code from Zoe(它是开源的)。看看CaptureSWF 类,特别是capture()handleVariableCaptureFrames()。这些方法是将 MC 的各个帧转换为 BitmapData 的核心,然后可用于构建 spritesheets。

    【讨论】:

    • 我实际上将 Zoe 用于 JS 实验......我忘了它是开源的。我也会对此进行调查。预编译精灵表的问题之一是,如果您要加载 100 个项目……MovieClip (SWF) 和 SpriteSheet 版本之间的大小存在巨大差异。加起来,您可以查看 800% 以上的文件大小。我真的很想避免这种情况。
    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多