`

ActionScript 3.0 性能优化小知识

阅读更多

最近做的很多的事情都是和Flash开发有关,尤其是在性能优化上总结到不少经验,在这里分享给大家。

和其他平台开发一样,Flash程序的运行效率非常重要,为什么总有人觉得Flash程序很卡?甚至有人觉得Flash程序的运行效率还不如IE执行JavaScript 快,原因就在于写Flash程序的人,算法、代码写得太烂,最后连Flash Player的名声都被这些人写坏掉了。

高性能的程序源自高性能的算法、代码、和结构,下面就围绕着这个主题开始展开介绍。

 

1、改进算法

无论对于那一种程序,好的算法总是非常重要的,而且能够极大地提高程序性能,所以任何性能的优化第一步就是从算法或者说程序逻辑的优化开始,检查自己的程序是否有多余的运算,是否在没有必要的时候做了无用功,往往从这些方面就能找到那些导致性能低下的地方。

 

2、优化细节代码

针对细节总是好的,有一些小技巧比如:

var obj:Object = {}; 要比 var obj:Object = new Object();要好;

var arr:Array = []; 要比 var arr:Array = new Array(); 要好;

for (var i:int=0, len=arr.length; i<len; i++) 要比 for (var i:int=0; i<arr.length; i++) 要好;

如果不是为了保存颜色值请不要适用uint这个类型,他的速度比起 int要慢多了;

Array的遍历要比Object或者Dictionary的枚举要快得多。

if (myObj != null) 要比 if (myObj) 的速度要慢(更正, 之前把结果看反了,对不起大家~) for (var i:* in myObj) 比 for (var i:String in myObj) 要快;

Dictionary当 weak key设置为 true 的时候要比 false 慢;

var myText:String = "a" + "b" + "c";

var myText2:String = [ "a", "b", "c" ].join("");

在JavaScript里面在IE下后者要更快,但是在AS里面,前者更快!

在循环体内声明变量和在循环体外声明变量其实速度上不会有太大的区别。

 

3、权衡程序的结构

程序的架构也非常重要,良好的结构会带来性能和程序健壮性的提升,但是有的时候又是相互矛盾的,例如代码写得过于健壮,反而会影响性能,这个地方需要开发者自己去权衡。

 

4、小心Flash的重绘

如果你使用的是Flash Player 的Debugger版本,那么请在检查性能瓶颈的时候不要忘记打开显示重绘区域的功能,这将帮你迅速定位到舞台上有那些地方被重绘了,找出没有显示任何东西却不断重绘的地方,这些地方肯定是有问题的。Flash Player很笨,不会说你把一个DisplayObject的visible设置成false就放弃重绘那个显示对象。所以请保证你的MovieClip在visible=false的时候为停止状态。有一点很有意思,假设两个现实物体存在 hitTest = true 这样的关系,那么重绘的区域的面积很有可能 > 两者的面积总和!

 

5、以空间换时间

听起来挺虚,实则很简单,说白了就是以内存换CPU,例如将不变动的值进行保存,免去下次需要此数据的时候进行再次计算,虽然原理很简单,但是有的时候却很容易疏忽掉,而这个往往就造成你的算法效率低下的问题。

 

6、记得销毁你的对象

对于非常驻的对象使用完之后记得消除其引用,防止出现内存溢出的问题,往往要做到这一点需要有一个良好的编程习惯。

 

7、清除冗余的代码

有些代码可能你的程序一辈子也不会执行到,请把这些没有用的代码或者对象清理掉,否则内存会被偷偷的蚕食掉。

 

8、小心使用useBitmapCache = true

一般情况下除非你确定这个显示对象不可能发生变化那么用用也无妨,不过我更推荐自己手动的用BitmapData将该对象Draw一遍,然后让这个对象彻底消失。否则每次的变动都是巨大的性能消耗。

 

大致先总结到这里,欢迎大家一起来讨论关于Flash性能优化的细节。

分享到:
评论

相关推荐

    actionscript 3.0动画制作教程

    9. **性能优化**:在制作大型或高性能要求的动画时,了解如何优化ActionScript代码变得至关重要。这包括减少不必要的计算,使用位图缓存,以及正确管理内存。 通过深入学习和实践本教程中的例子,你将能够熟练掌握...

    ActionScript 3.0 编程.rar

    "ActionScript 3.0 编程.pdf"这份文档很可能是关于ActionScript 3.0的教程或参考手册,它可能涵盖从基础知识到高级特性的全面内容,包括对象导向编程、错误处理、性能优化、组件开发等方面。通过阅读和实践这份文档...

    Foundation ActionScript 3.0 Animation

    《Foundation ActionScript 3.0 Animation》是一本...《foundation Actionscript3.0 Animation.pdf》这个文件很可能是这本书的电子版,包含完整的章节内容和可能的练习案例,对于自学或者参考来说是非常宝贵的资源。

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

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

    ActionScript 3.0编程技术实战宝典pdf

    最后,书中可能还会涵盖ActionScript 3.0的性能优化技巧和调试工具,帮助开发者提升代码质量和运行效率。此外,还会讲解如何发布和打包Flash项目,以便在Web或桌面环境中运行。 总的来说,“ActionScript 3.0编程...

    Actionscript3.0开发的射击小游戏

    《ActionScript3.0开发的射击小游戏:深入解析与学习》 ActionScript3.0是Adobe Flash Professional和Flex SDK中的编程语言,它以其强大的性能和丰富的功能为网页和游戏开发提供了无限可能。本项目——“三角也疯狂...

    actionscript3.0开发的进度显示条项目

    ActionScript3.0(简称AS3)是Adobe Flash平台的核心编程语言,用于创建交互式、动态的富媒体内容,如网页动画、游戏、应用程序等。本项目“actionscript3.0开发的进度显示条项目”显然是一个使用AS3实现的可视化...

    《ActionScript 3.0 语言和组件参考》中文官方版本,无错

    ActionScript 3.0 提供了可靠的编程模型,具备面向对象编程的基本知识的开发人员对此模 型会感到似曾相识。ActionScript 3.0 中的一些主要功能包括: ■ 一个新增的 ActionScript 虚拟机,称为 AVM2,它使用全新的...

    ActionScript3.0代码示例项目

    ActionScript3.0是Adobe开发的一种强大的编程语言,主要用于创建富互联网应用程序(RIA),...此外,这个示例还可能涵盖了错误处理、性能优化和代码组织结构等方面的知识,这些都是开发高效、可维护的AS3项目的基石。

    ActionScript3.0完全自学手册电子教案

    通过上述知识点的详细阐述,我们可以看到ActionScript3.0不仅在语言本身进行了大幅度的改进和完善,还在开发工具和API方面进行了大量的优化,极大地提升了开发者的体验和应用程序的性能。对于想要学习和掌握...

    ActionScript3.0中文版

    总之,ActionScript3.0中文版的学习将涵盖面向对象编程基础、类库的使用、事件处理机制、性能优化等多个方面。对于想要开发交互式网页应用、游戏或者桌面应用的开发者来说,掌握AS3的知识至关重要。通过深入研究提供...

    ActionScript3.0入门基础

    9. **ActionScript 3.0的性能优化**: - **垃圾回收机制**:理解内存管理,避免内存泄漏。 - **代码优化技巧**:减少不必要的计算,优化循环结构,提高程序运行效率。 总之,《ActionScript 3.0入门基础》教程将...

    ActionScript3.0游戏编程源码

    10. **调试与优化**:ActionScript 3.0提供强大的调试工具,如Flash Professional的Debugger版本和独立的fdb命令行调试器,帮助开发者找出并修复问题,优化性能。 通过《Action3.0游戏编程》这本书的实例代码,你...

    Flash Actionscript 3.0学习指南1

    以下将详细阐述Flash Actionscript 3.0的一些关键知识点: 1. **基础语法**:ActionScript 3.0采用了强类型系统,这意味着变量在声明时必须指定其数据类型,如int、Number、String等。此外,它支持类和对象的概念,...

    Flash ActionScript3.0编程手册

    ### Flash ActionScript3.0编程手册知识点概览 #### 一、ActionScript3.0简介 ActionScript3.0是一种强大的面向对象编程语言,适用于Adobe Flash Player和Adobe AIR环境下的应用程序开发。它允许开发者创建复杂且...

    ActionScript3.0语言和组件参考.chm

    相较于早期版本,ActionScript3.0在性能、类型系统、错误处理、面向对象编程等方面有了显著提升。 1. **类型系统**:ActionScript3.0引入了强类型系统,这意味着每个变量都必须声明其数据类型,这提高了代码的稳定...

    基于ActionScript 3.0本地播放器

    在基于ActionScript 3.0实现的本地播放器中,我们可以深入探讨以下几个关键知识点: 1. **ActionScript 3.0 的特性**: - 强类型:与AS2相比,AS3引入了强类型系统,提高了代码的可读性和安全性。 - 事件驱动:AS...

    ActionScript 3.0 cookbook中文简体完整版电子书

    9. **性能优化**:提供关于提高ActionScript 3.0程序性能的技巧和最佳实践,包括垃圾回收、内存管理和代码优化。 10. **组件开发**:介绍如何创建自定义组件,以及如何利用Flex SDK或Spark组件模型来扩展应用功能。...

    ActionScript 3.0 编程(PDF)

    动态数组可以随时添加和删除元素,而固定大小的向量提供了额外的性能优化。 2. 数组方法:包括 `push()`, `pop()`, `shift()`, `unshift()`, `slice()`, `join()`, `concat()` 等,用于操作数组元素。 七、事件...

Global site tag (gtag.js) - Google Analytics