AS3:是否可以在运行时从向量生成动画精灵表?

时间:2012-02-08 09:02:29

标签: actionscript vector bitmapdata

我想在我的Actionscript游戏中使用Bitmaps。

对我而言,这代表了我工作流程的一个很大的变化,因为我一直使用Vector,但在某些情况下,Bitmaps实际上要快得多。据我所知,我所有游戏资产的90%都可以是位图。

首先,是否有任何使用Vector to BitmapData的好工具?库或OpenSource实用程序?

我知道你可以绘制到BitmapData,我这样做,但动画呢?那个笑牛的MovieClip怎么样?如何在运行时将MovieClip渲染为某种Bitmap版本?

但比那更复杂......那么你没有原始形式的MovieClip呢?

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

任何人都可以向我提供我可以搜索的任何资源或谷歌关键字,不确定技术,但它似乎有意义吗?特别是对于Starling ..... My Vectors必须在某些时候成为SpriteSheets。

感谢。

2 个答案:

答案 0 :(得分:2)

将影片剪辑转换为精灵表的基本过程如下:

  1. 选择一个动画片段。
  2. 获取影片剪辑的边界。你需要获得最宽和最高的动画帧的宽度和高度。
  3. 获取影片剪辑的帧数。
  4. 创建一个新的bitmapdata对象,其宽度与帧的宽度乘以帧的宽度。并且高达一帧。 5循环遍历剪辑的每个帧,并在每个帧上调用bitmapData.draw()。一定要将每帧上绘制命令的矩阵偏移一个精灵帧的宽度。
  5. 最终结果将是一个bitmapdata对象,每个帧都呈现给它。

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

答案 1 :(得分:1)

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

但是,如果你打算在运行时制作spritesheets,你可能会重新调整一些code from Zoe(它是开源的)。请查看CaptureSWF课程,尤其是capture()handleVariableCaptureFrames()。这些方法可以将MC的各个帧转换为BitmapData,然后可以用它来构建spritesheets。