4

I'm working on a game and I have a bunch of animating movie clips moving at the same time. Normally my games just have simple shapes, but this time I'm upping the production value by going inside each movieclip and using the pencil tool to draw a nice image with shading, etc. It's a lot of lines.

The problem is that when I go to animate these, then the framerate drops to about 2 fps. I have about 10-20 objects animating at the same time.

Things I've tried: - Using Flash's Optimize feature (No change) - Exporting the line drawings as a png and then reimporting (Helped some, but quality went down, and it still was only about 10fps)

What can I do to have great looking flash art and animations but still keep framerate high? I know there must be a standard workflow here that I'm missing.

Thanks so much!

4

4 回答 4

3

注意:我是 Scarygirl 的两个开发者之一。

当您在 PC 上时,我们的位图缓存动画效果非常好,尤其是在内存很大的情况下。我们缓存了我们所有的角色动画,除了 Scarygirl 自己,因为她的动画太多了,而且她可以改变大小。

在移动设备上,以这种方式使用动画缓存并不是最佳选择,因为切换位图很慢,写入位图很慢,而且它们的内存比大多数 PC 少。Starling 在这里很好,因为它被编写为以优化的方式使用硬件。

Starling(和类似产品)的问题在于工具和细节。您要么必须在事先导出每个帧的地方进行 spritemap blitting(大小膨胀,工具链较大等),要么只进行补间动画,而没有这么好的工具。

我们还有一个新的测试也集成了 SpriteSheets。至少对于 PC 来说这似乎更慢,尤其是在不使用 Canvas3D 时!

http://blog.touchmypixel.com/2008/11/caching-animation-frames-vs-spritesheets/

于 2012-11-21T22:00:32.440 回答
1

我建议使用 tilesheets 的 blitting 作为非硬件加速的方式来提高动画对象的帧速率。我很确定 cacheAsBitmap 必须在每个关键帧上重绘。

因此,对于您的动画,您需要创建一个 tilesheet,其中包含布局在矩形位图上的动画的每一帧(如果需要,您可以在运行时计算它)。

然后在渲染时,您从 tilesheet 中查找所需帧的像素位置,然后通过 copyPixel 函数将此区域绘制到渲染位图上。然后,渲染位图就是您用来显示图形的东西。

我相信屡获殊荣的 Flash 游戏ScaryGirl使用了这种技术进行渲染。您可以在开发者博客上找到更多信息

http://blog.touchmypixel.com/2008/04/as3-bitmap-cached-animations/

于 2012-04-30T06:10:57.490 回答
1

借助 Flash 11 的新 Stage3D api,可以使用 2D 硬件加速。如果您想让事物尽可能接近普通类(Sprite、DisplayObject 等),而不必担心所需的低级 AGAL 和着色器等,那么我推荐 Starling。这是一个很棒的框架,可以让您使用硬件加速的惊人速度优势,而无需学习任何您不知道的东西。

有关更多信息,请查看http://gamua.com/starling/。这是您想要实现的最快的选择,我建议您尝试他们的演示,看看它的实际性能如何。

于 2012-04-29T21:57:22.007 回答
0

事实证明,线条和曲线的数量对帧率有很大的影响。如果您将铅笔工具用作一种素描工具,那么您最终会得到数千条曲线。使用钢笔工具要好得多,并且行数少可以保持高帧率。

对我来说很好的学习课。感谢大家的帮助!

于 2012-05-02T04:49:11.740 回答