优化Flash性能(最终篇)

有关Stage3D

Stage3D是基于GPU的显示渲染模型,它是Flash Player11版本发布的。这个模型对3D渲染特别有用,但是使用例如Starling的框架也能服务于2D显示。

因为原本CPU承担了全部的渲染显示工作,(当运行一个程序时CPU也要做其他工作),而现在GPU承担了一部分渲染工作,就可以让CPU有更多的空闲做其他工作。这样的利用极大的提高了设备性能。

想看Stage3D内容,你必须使用Flash Player11或更高版本。想看Stage3D的API,你需要用Flash Player11或更高版本发布SWF文件。如果你使用Flash Professional CS6工作,那它已经全部设置好了。如果你用的是Flash Professional CS5或CS5.5,你可以更新Flash安装文件使之可以发布Flash Player11。更多的细节,可以看Rich Galvan写的名为Adding Flash Player 11 support to Flash Professional CS5 and CS5.5博客。

很不幸,使用Stage 3D的API非常困难。但是,有几个免费开源的框架可以生成使用Stage 3D所需的最基本的代码。

其中之一就是Starling,被用来开发2D游戏。它简单易学并且高效简化了Stage3D的复杂性。Starling 的API可以在Starling框架参考网站里寻找。

我测试了Starling来看它和blitting、partial blitting相比较如何。在某些情况下,Starling表现的比这两种blitting要不好。事实上,他表现的比没有优化的10,000个正方形影片剪辑的测试还要糟糕。

但是,在Starling测试里,如果你不选择允许编译选项,那么这小小的改变可以使帧频快两倍,输出的SWF文件可以比得上没有优化的10,000个正方形测试。但是这个结果依然让人失望,部分的问题在于,我使用编译版本的Flash Player来测试时,在编译和不编译两种情况下,Starling在编译情况下表现的不好。

另外,10,000个正方形影片剪辑测试不能显示出Starling最好的一面。如果你使用许多包含各自时间轴动画的影片剪辑,Starling会比几乎任何你使用的简单优化技术要出色。

仅仅blitting优化的性能就要优于使用Stage3D和Starling所带来的收益。但是blitting也许不是那么实用,因为内存需要创建所需的位图。

范例文件在starling_test 文件夹下。

使用Starling框架时,要遵循以下步骤:

1.下载Starling.swc文件。

2.使用以下步骤将它导入你的Flash工程链接库:

1)选择,文件>发布设置>脚本设置。

2)点击库路径选项卡,然后点击浏览,选择你下载好的swc文件的位置路径。

3)在“打开文件”对话框,选择你放swc文件的路径。

4)点击“打开”,添加starling.swc到你的链接库路径。

5)点击OK关闭高级ActionScript 3.0设置面板,然后再次点击OK关闭发布设置。

6)保存Fla文件,你就可以使用Starling了。

(我一般都是在builder里导入和使用的,估计这里有人看了会迷茫,我翻译的不是太好,自己多选两次就知道了,让我偷个懒吧!)

如果你用Stage3D发布移动air游戏(它包括了类似Starling的框架来使用Stage3D),可以设置渲染模式来指导。如果你发布的是内置HTML文件,可在发布设置里设置窗口模式进行指导。

你可以在Adobe Gaming site学习更多有关Starling和Stage3D API的信息。

下一步

除上面所讨论的优化技术外,开发Flash项目要提高重放性能时,还有另外两种你可以使用的最佳实践技术:

1.为你声明的每个变量确定类型,如果你肯花时间确定所有变量的类型,代码会执行的更快,当遇到错误时,编译显示的错误信息也更具描述性和帮助性。可以查看测试范例variables_typed_v_untyped。

2.使用Vector而不是array来存储数据信息。为了看到它的性能,可以看array_v_vector文件。

希望这篇文章的推荐的大纲可以帮你提高在Flash Professional里创建工程的性能。想要学习更多有关建立Flash动画,应用和游戏的信息,可以访问Flash Developer Center。



发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(Spamcheck Enabled)