`

FLASH/ActionScript 性能优化

阅读更多

一. 图形方面的优化

1. 减少同时在屏幕上物体的个数

2. 尽量减少屏幕需要重画的范围。

3. 尽量避免全屏滚动

4. 保持帧数在16-20, 每一帧都连续,比将帧数设置的很高,但是每一帧的计算超过帧时间,让人感觉更舒服。

5. 如果一个物体不需要显示,尽量将他从屏幕上删除,而不是将他设置成不可见。因为即使不可见的物体也会引起屏幕的重画。

6. 尽量用小一点的分辨率

二. 脚本方面的优化

1. 在循环中尽量使用局部变量, 因为可以做寄存器优化

2. 不断的做 Profile

 

 

==============

由于大多数移动设备在处理速度和内存方面都有一定的限制性,因此在开发适用于移动电话中使用的 Flash Lite 内容的 ActionScript 时,请遵循以下原则:

  • 使 ActionScript 尽量简单。
  • 限制使用的循环数和每个循环包含的代码数。
  • 当不再需要基于帧的循环时,应当立即停止该循环。
  • 尽量避免字符串和数组处理,因为这对 CPU 的消耗很大。
  • 始终尝试直接访问属性,而不要使用 ActionScript getter 和 setter 方法,因为与其它方法调用相比,这两种方法需要更高的开销。
  • 巧妙并更为具体地管理事件。在调用侦听器之前利用一些条件来检查侦听器是否存在(不为

     

    null

    ),以此来使事件侦听器数组更加简洁。

  • 不再需要变量时,请删除变量或将变量设置为

     

    null

    。这样做可以标记数据,以便进行垃圾回收。删除变量有助于在运行期间优化内存使用情况,因为从 SWF 文件中删除了不需要的资源。删除变量比将变量设置为

    null

    更好。

    有关垃圾回收和内存管理技术的更多信息,请参见管理应用程序的内存

  • 在进行垃圾回收前,通过调用

     

    removeListener()

    从对象中显式删除侦听器。

  • 如果动态调用函数并传递固定的一组参数,则请使用

     

    call()

    ,而不要使用

    apply()

  • 尽量使命名空间(如路径)简短以节省启动时间。包中的每个级别均会被编译为一个

     

    IF

    语句,并导致一个新的

    Object()

    调用,因此路径中的级别较少可以节省时间。

    例如,具有

    com.xxx.yyy.aaa.bbb.ccc.functionName()

    级别的路径会使一个对象针对

    com

    xxx

    yyy

    aaa

    bbb

    ccc

    被实例化。有些 Flash 开发人员使用预处理器软件,在编译 SWF 之前,将路径简化为一个唯一标识符,如

    58923409876.functionName()

  • 如果应用程序由多个使用相同 ActionScript 类的 SWF 文件组成,则可以在编译过程中从选择的 SWF 文件中排除这些类。这样有助于缩短应用程序的下载时间和降低运行时内存要求。有关更多信息,请参见从编译过程中排除类
  • 避免使用

     

    Object.watch()

    Object.unwatch()

    ,因为对象属性的每次更改都要求播放器确定是否必须发送更改通知。

  • 如果在时间轴中的关键帧上执行的 ActionScript 代码需要 1 秒以上方可完成,则应考虑分割该代码,使其在多个关键帧上执行。
  • 在发布 SWF 文件时从代码中删除

     

    trace()

    语句。为此,在"发布设置"对话框的"Flash"选项卡上,选择"省略跟踪动作"复选框。

  • 继承会增加方法调用的数量,而且会使用更多的内存:包括所需全部功能的类在运行时要比从超类继承某些功能的类更加有效。因此,您可能需要在类的扩展性和代码有效性间做出一定的设计取舍。
  • 当一个 SWF 文件加载另一个包含自定义 ActionScript 类(例如

     

    foo.bar.CustomClass

    )的 SWF 文件,然后再卸载该 SWF 文件时,该类定义仍将保留在内存中。为了节省内存,应显式删除已卸载 SWF 文件中的所有自定义类。可以使用

    delete

    语句,然后指定完全限定类名,如下面的示例所示:

    delete foo.bar.CustomClass

     

  • 限制全局变量的使用,因为如果删除了定义全局变量的影片剪辑,这些全局变量就不会被垃圾回收。
  • 避免使用标准用户界面组件(在 Flash Professional 8 的"组件"面板中提供)。这些组件设计用于在桌面计算机上运行,并未针对在移动设备上运行而优化。
  • 尽量避免深层嵌套函数。
  • 避免引用不存在的变量、对象或函数。与桌面版本的 Flash Player 相比,Flash Lite 2.0 在查找对不存在的变量的引用时速度非常缓慢,这会显著影响应用程序的性能。




记录一下,有些和其它语言或场景优化比较相似,不过独有一些和VM的东西。
摘抄的地图的相关优化
1. 地图上重复用到的物件一定要转成元件(图形和影片剪辑都可)
2. 地图上一定不要出现不是元件的图形,不管它是组还是其他的什么
3. 地图上如果有动画,一定要少,桢数要少,动作也要小。如果有几组动画,一定要错开关键桢。这样在视觉和性能上都可以上一个档次。
4. 元件也存在优化,里面如果有多个重复的图形也是要分散开多个元件,举例树而言,里面的叶子,一般我都是制作成组的,但在最后定稿的时候,最好把他们打散到 一层里。
5. 透明(alpha),渐变都是flash性能的杀手,更不要提柔化填充边缘了
6. 节奏,我们现在是采用的24桢/秒,如果你上述的方法都用过了,那就要试着把你的节奏变慢,原来是一分种重复一次的小动画,那你就要做成2分钟的,或更 慢。还不行就直接拿掉。
7. 元件在地图上面不要缩放和扩大,虽然矢量的优点就是可以随意的扩大的缩放,但大家做成元件时就应该考虑到大小的问题,要修改的话,不要在舞台上操作,应该 进到元件里面修改,虽然只是一个双击的问题,但对结果的影响却不是一般的大。
8. 图形优化,这是一个还没验证的话题,所以大家慎用。由于在画图的过程中,会产生一些多余的你无意产生的节点,当然,图形越复杂越会多,而节点的庞杂就是导 致flash运行慢的罪魁祸首,所以,你可以试一下菜单栏的修改-形状-优化,但一定不要把参数调高,甚至可以把参数调成无,它也会帮你优化。我一般是不 用的,因为。。。。。麻烦。而且还没有测试,结果未知。
9. 以上都是说的矢量的,如果你的文件里有位图的话,那就另当别论了,最开始我们的游戏全是位图,不会出现什么性能慢的问题,但文件就很大,用矢量才会出现我 上面讲的优化问题。

 

推荐论坛:

http://www.adobe.com/devnet.html

 

分享到:
评论

相关推荐

    FLASH+ACTIONSCRIPT3.0从入门到精通PDF版

    9. **优化与调试**:学习性能优化技巧,如何使用ActionScript编译器和调试工具进行问题排查。 10. **发布与部署**:了解如何将Flash项目打包成SWF或AIR应用程序,以及如何在不同平台上发布和运行。 此外,本书的...

    flash8.0 ActionScript2.0 电子文档

    - **性能优化技巧**:了解如何编写高效的ActionScript代码,减少不必要的计算。 - **调试工具**:熟悉使用Flash的内置调试器,定位和修复问题。 通过《ActionScript 2.0完全手册》的学习,你将能够熟练地运用...

    Flash CS5 ActionScript 3.0 参考.chm

    ActionScript 3.0是Flash平台上用于创建交互式内容、动画和富互联网应用的核心语言,它的更新带来了更强大的性能和更为严谨的面向对象编程特性。 ActionScript 3.0的最大变化之一是引入了强类型系统,这意味着变量...

    Flash Flash actionscript 3.0 动画教程源码

    《Flash ActionScript 3.0 动画教程源码详解》 ActionScript 3.0 是Adobe Flash开发中的核心编程语言,它为创建交互式、动态的动画内容提供了强大的支持。本教程源码主要聚焦于如何利用ActionScript 3.0进行高效的...

    Flash_ActionScript_3.0从入门到精通

    10. **第10章:高级话题** - 可能涉及错误处理、性能优化、调试技巧,以及ActionScript 3.0与其他技术的整合,如与Flex框架的结合。 11. **第11章:ActionScript与移动设备** - 如何利用ActionScript 3.0开发针对...

    Flash ActionScript 2.0 速成[PDF]

    - **性能优化**:通过编译器的改进,提高了代码执行效率。 - **调试工具**:提供了更强大的调试工具,帮助开发者快速定位并解决问题。 #### 三、系统要求与安装 - **系统兼容性**:确保计算机系统满足 Flash 8 的...

    Flash ActionScript 2.0教程(PDF)

    《Flash ActionScript 2.0教程》是一本专为初学者和有一定基础的ActionScript使用者设计的PDF电子书。ActionScript是Adobe Flash平台的核心编程语言,用于创建交互式、动态和丰富的网络内容。本教程旨在帮助读者掌握...

    Flash ActionScript 3.0动画高级教程

    - **性能优化**:教授如何识别和消除代码中的瓶颈,提高动画的流畅度。 - **错误处理与调试**:介绍有效的调试技巧,帮助开发者在开发过程中及时发现并修复问题。 #### 4. **互动与用户界面** 教程还包括了如何...

    flash cs3 actionscript游戏开发基础与范例光盘

    在游戏开发过程中,性能优化是一项关键任务。了解如何减少不必要的计算、优化内存管理和正确使用缓存,可以提升游戏的运行速度和用户体验。 综上所述,Flash CS3 ActionScript游戏开发涵盖了从基础的编程概念到复杂...

    Flash ActionScript3.0编程手册

    - **性能优化**:了解如何编写高效的代码,减少内存使用,提高应用程序性能。 - **调试技巧**:掌握使用调试工具和技术,如断点、日志记录等,帮助查找和修复程序中的错误。 - **网络编程**:学习如何使用...

    FLASH MX ActionScript 手册

    10. **优化技巧**:了解如何编写高效、简洁的ActionScript代码,减少文件大小,提高加载速度和性能。 11. **AS2与AS3的区别**:虽然本书可能基于AS2,但AS3作为后续版本,其改进和新特性也值得了解,如更严格的类型...

    Flash-性能优化

    ### Flash-性能优化 在Adobe®Flash®Platform的性能优化领域,开发者们追求的是如何让他们的应用程序在多种设备上高效运行,从台式机到移动设备,甚至到电视设备。以下是从给定文件中提取的关键知识点,涵盖了从...

    Flash ActionScript 3.0动画教程(中文高清)+源码

    12. **优化与性能**:分享最佳实践,提升ActionScript代码的执行效率,减少资源消耗。 通过《Flash ActionScript 3.0动画教程》的学习,读者不仅能掌握ActionScript 3.0的基本用法,还能了解如何结合动画原理和编程...

    Flash.ActionScript.3.0 基础教程 学习笔记(上机)

    ActionScript 3.0是Adobe Flash Professional和Flash Player中的核心编程语言,它极大地提升了性能和开发效率,为创建交互式内容、游戏以及丰富的互联网应用程序提供了坚实的基础。 本教程分为几个关键部分,首先会...

    Flash cs4 ActionScript3.0帮助文档

    8. **调试和性能优化** - **Debugger版本**:AS3有专门的调试版本,支持断点、变量查看和性能分析。 - **代码优化技巧**:了解如何减少内存占用,优化循环,正确使用垃圾回收等。 9. **本地存储和AIR应用** - **...

Global site tag (gtag.js) - Google Analytics