Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript AS3:是否可以在运行时从vector生成动画精灵图纸?_Actionscript_Vector_Bitmapdata - Fatal编程技术网

Actionscript AS3:是否可以在运行时从vector生成动画精灵图纸?

Actionscript AS3:是否可以在运行时从vector生成动画精灵图纸?,actionscript,vector,bitmapdata,Actionscript,Vector,Bitmapdata,我想在我的Actionscript游戏中使用位图 对我来说,这代表了我的工作流程中的一个巨大变化,因为我一直使用矢量,但位图在某些情况下渲染速度要快得多。据我所见,我所有游戏资产的90%都可以是位图 首先,有没有什么好的工具可以用来处理矢量到位图的数据?库还是开源实用程序 我知道你可以直接绘制位图数据,我也可以,但是动画呢?一部笑牛唇的电影怎么样?如何在运行时将MovieClip渲染为某种位图版本 但更复杂的是。。。如果没有原始形式的电影唇,情况会怎样 想象10000个齿轮以代码生成的相同速度转

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

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

首先,有没有什么好的工具可以用来处理矢量到位图的数据?库还是开源实用程序

我知道你可以直接绘制位图数据,我也可以,但是动画呢?一部笑牛唇的电影怎么样?如何在运行时将MovieClip渲染为某种位图版本

但更复杂的是。。。如果没有原始形式的电影唇,情况会怎样

想象10000个齿轮以代码生成的相同速度转动。这对处理器来说是一项艰巨的工作,因此,将其绘制为位图,持续1圈,将用一个精灵表替换10000个齿轮。我可以摧毁齿轮,保留精灵片

有人能给我提供我可以搜索的资源或谷歌关键词吗?我不确定这项技术,但它似乎是有意义的?尤其是椋鸟。。。。。我的向量在某个时候会变成精灵表


谢谢。

在运行时将SpriteSheet转换为位图并不是一项简单的任务,您最好在编译之前构建SpriteSheet,并使用带有blitting引擎的框架,如Flixel或Flashpunk(我对Starling不太熟悉,但我想这也会起作用)。有两个像样的MovieClip/SWF到png转换器:


然而,如果您打算在运行时制作SpriteSheet,您可能可以重新调整其中一些(它是开源的)。看看这个类,特别是
capture()
handleVariableCaptureFrames()
。这些方法是将MC的各个帧转换为位图数据的关键,然后可以使用位图数据来构建SpriteSheet。

在运行时将SpriteSheet转换为位图并不是一项简单的任务,在编译之前构建SpriteSheet,并使用带有blitting引擎的框架可能会更好,比如Flixel或Flashpunk(我对椋鸟不太熟悉,但我想这也行)。有两个像样的MovieClip/SWF到png转换器:


然而,如果您打算在运行时制作SpriteSheet,您可能可以重新调整其中一些(它是开源的)。看看这个类,特别是
capture()
handleVariableCaptureFrames()
。这些方法是将MC的各个帧转换为位图数据的关键,然后可以使用位图数据构建精灵表。

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

  • 选择一部电影
  • 获取电影剪辑的边界。您需要获得动画的最宽和最高帧的宽度和高度
  • 获取电影剪辑的帧数
  • 创建一个新的bitmapdata对象,其宽度为帧的#乘以帧的宽度。高达一架。 5循环浏览剪辑的每一帧,并在每一帧上调用bitmapData.draw()。确保在每个帧上按一个精灵帧的宽度偏移绘制命令的矩阵
  • 最终结果将是单个bitmapdata对象,每个帧都渲染到该对象

    从那里,你可以按照本教程的布告。

    将电影剪辑转换为精灵图纸的基本过程如下:

  • 选择一部电影
  • 获取电影剪辑的边界。您需要获得动画的最宽和最高帧的宽度和高度
  • 获取电影剪辑的帧数
  • 创建一个新的bitmapdata对象,其宽度为帧的#乘以帧的宽度。高达一架。 5循环浏览剪辑的每一帧,并在每一帧上调用bitmapData.draw()。确保在每个帧上按一个精灵帧的宽度偏移绘制命令的矩阵
  • 最终结果将是单个bitmapdata对象,每个帧都渲染到该对象

    从那里,你可以按照本教程的布告。

    感谢您的回复!你说的很有道理,我今晚就试试。谢谢你的回复!你说的很有道理,今晚我会试试。我实际上用Zoe做了一个JS实验。。。我忘了它是开源的。我也会研究这个问题。预编译的sprite表单的一个问题是,如果加载100个条目。。。MovieClip(SWF)和SpriteSheet版本在大小上存在巨大差异。加起来,你可以看到800%以上的文件大小。我真的很想避免。我实际上用Zoe做了一个JS实验。。。我忘了它是开源的。我也会研究这个问题。预编译的sprite表单的一个问题是,如果加载100个条目。。。MovieClip(SWF)和SpriteSheet版本在大小上存在巨大差异。加起来,你可以看到800%以上的文件大小。我真的想避免这样。