1、在局部变量够用时,不要使用全局变量。类静态变量也要少用。全局变量是开发者的恶梦。实在需要全局变量的话,我建议使用singleton设 计模式来进行管理。

2、读取数组中的数据,尽量使用for in 循环来代替传统的 for 或者while循环语法。 
因为for in的执行效率比起后者提高了30%。其次是选择while循环,传统for循环语法的效率在三者中是最低的。 
向数组中写入数据,则是while循环稍占优势。

3、给所有的MovieClip都多加一个空白帧,当他们不出现在屏幕上时,你能用gotoAndStop()语句跳转到这一帧。为什么呢?因为 播放器仍然要消耗一定的资源来处理这些不可见/屏幕外的mc,哪怕他们是单帧,非播放的状态。简单的设置可见度属性为不可见( _visible = false )是无效的,播放器依然会按照这些MC说停留或播放的帧的复杂度来分配资源。

4、能用单行赋值则使用单行赋值。比如: 
a = 0 
b = 0 
c = 0 
效率就不如: 
a = b = c = 0

5、变量名越短,效率越高。考虑到长变量名也有它的好处(比如,便于维护等),因此建议在关键部位(比如大量循环出现的时候)使用短变量名,最好 就1-2个字符。

6、不要过多使用 Object 类型。 数据类型注释应力求精确,这样可以提高性能。只有在没有适当的备选数据类型时,才使用 Object 类型。同时也便于代码管理,时刻知道对象的类型和作用。同时也有利于编译器编译时优化。

7、避免使用 eval() 函数或数据访问运算符。 通常,较为可取且更有效的做法是只设置一次局部引用。不得已时才用eval,比如转换_droptarget为MovieClip时。

8、在开始循环前将 Array.length 赋予变量,尤其是大的循环。 在开始循环前将 Array.length 赋予变量(比如var iLength:Number),将其作为条件使用,而不是使用myArr.length 本身。原因,在循环中,iLength是Number变量,会被放入寄存器使用,效率远比访问Array再得到length高。

9、当用到复杂的条件表达式时。把他们打散成为嵌套的独立判断结构是最佳方案。比如if(a&&b&&c)的效 率就低于if(a){if(b){if(c){}}}。当然这样做代码是会比较不美观。

10、在用到矢量图的时候,我们要尽可能简化它们的形状,去除多余的端点。这样做将大大降低播放器用于呈现矢量图所要进行的计算量。

11、需要呈现比较复杂的场景时,你就最好考虑使用位图实现。 
虽然Flash在对位图的渲染效率上并不是最优越的(比如和Flash的“兄长”Director比起来),但丰富的视觉内容呈现只能靠位图(与 位图同复杂度的矢量图形渲染速率非常低)了,这也是很多基于区块的游戏中广泛采用像素图作为背景的原因。
顺便要提到的是,Flash虽然对GIF,JPG和PNG都有所支持,但是渲染速度上PNG还是占有绝对优势,所以建议flash中的位图都尽可 能采用PNG格式。

12、运用线条时,尽量减少和避免冗陈的线条结构,因为它们会直接影响到flash的播放效率。

13、当某个实例透明度小于1时,也会对播放速率造成影响。

14、尽量使用单独一个onEnterFrame事件,因为如果给过多的MoveClip添加这样的事件,很可能会导致“无头绪码 (spaghetti code)”的出现,并且容易导致程序效率明显下降。

15、用乘-1来代替Math.abs()方法。比如 
var nn:Number = -23; 
var test:Number= nn < 0 ? nn * -1 : nn; 
要比 
var nn:Number = -23; 
var test:Number = Math.abs(nn);快。 
当然还有更多的优化计算的方法。一般来说,低级运算要比高级运算速度;内部方法比调用其他方法速度快。 
另外要注意的是,这些方法有的时候可能并一定适用。

16、用unit()或int()代替取整运算Math.floor()和Math.ceil()。比如 
var test:uint = uint(1.5); 
要比 
var test:Number = Math.floor(1.5);快; 
而var test:uint = uint(1.5)+1; 
要比var test:Number = Math.ceil(1.5);也快。 
如果是Math.floor(),还可以用位运算(>>0)来代替。比如 
var test:uint =1.5>>0,比unit()或int()更快。

17、用位运算代替除2或乘2。比如10>>1要比10*2快,而10<<1要比10*2快。 
从测试来看位运算几乎比乘除快一倍,但是一般情况下,我们不能选择位运算,比如我们就不能用13>>1来代替13/2,尽管前者比后 者运算速度更快,但2者的运算结果却不一样。所以还是要看具体情况盛世游戏http://www.shengshiyouxi.com

18、用乘法来代替除法(当除数可转化为有限数的时候)。比如 
var n:Number = value * 0.5; 
要比 
var n:Number = value / 2;快。 
但差别并不是很大。只有在需要大量计算情况下,比如3D引擎中差别才比较明显。

AS代码优化和Flex应用程序的性能的更多相关文章

  1. 使用Metrics监控应用程序的性能

    在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析.在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如当前系统中对 ...

  2. .NET程序的性能要领和优化建议

    前几天在老赵的博客上看到,Bill Chiles (Roslyn 编译器的Program Manager)写了一篇文章叫做<Essential Performance Facts and .NE ...

  3. 使用Memcached提高.NET应用程序的性能

    在应用程序运行的过程中总会有一些经常需要访问并且变化不频繁的数据,如果每次获取这些数据都需要从数据库或者外部文件系统中去读取,性能肯定会受到影响,所以通常的做法就是将这部分数据缓存起来,只要数据没有发 ...

  4. timeSeries db之:使用Metrics监控应用程序的性能 (zz)

    在编写应用程序的时候,通常会记录日志以便事后分析,在很多情况下是产生了问题之后,再去查看日志,是一种事后的静态分析.在很多时候,我们可能需要了解整个系统在当前,或者某一时刻运行的情况,比如当前系统中对 ...

  5. 提升 web 应用程序的性能(一)

       提升 web 应用程序的性能,找出瓶颈,加快客户端内容的速度.    作为 web 用户,我们知道页面加载或刷新的速度对其成功至关重要.本文将帮助您更好地理解影响 web 应用程序性能的因素.学 ...

  6. DBUtils开源JDBC类库,对JDBC简单封装(作用是:简化编码工作量,同时不会影响程序的性能)

    DBUtils:提高了程序的性能,编程更加简便 架包 mysql-connector-java-jar commons-dbcp-1.4jar commons-pool-1.5.5jar common ...

  7. Flex应用程序如何启动

    Flex应用程序启动 编写一个简单的Flex应用程序并不复杂,就算你从来没接触过Flex程序设计,照着帮助的实例步骤,不需花多长时间也能做出一个漂亮简捷的小程序出来.不过,随着对Flex程序编写的深入 ...

  8. Chrome 开发者工具的Timeline和Profiles提高Web应用程序的性能

    Chrome 开发者工具的Timeline和Profiles提高Web应用程序的性能 二.减少 HTTP 的请求数    当用户浏览页面时,如果我们在用户第一次访问时将一些信息一次性加载到客户端缓存, ...

  9. 【转】使用Memcached提高.NET应用程序的性能

    在应用程序运行的过程中总会有一些经常需要访问并且变化不频繁的数据,如果每次获取这些数据都需要从数据库或者外部文件系统中去读取,性能肯定会受到影响,所以通常的做法就是将这部分数据缓存起来,只要数据没有发 ...

随机推荐

  1. 《java系统性能优化》--2.高速缓存

    上一节.简介了怎样发现性能瓶颈.从这节開始.我会和大家分享我在项目中做的一些性能调优工作.这个系列没有什么顺序可言,认为什么重要.就说说什么. 这节.我们聊缓存. 最開始接触缓存这个词,是学习硬件知识 ...

  2. PS抠出树叶树枝

    1.打开PS 2.加载树叶树枝图片 3.双击该图层,来解锁树叶树枝图层 4.通道面板,只留下蓝色 5.顶部菜单 -> 图像 -> 计算 -> 混合为正片叠底,得到一个新Alpha图层 ...

  3. Android Studio之同一应用创建多个Activity(一)

    1. 2. 3. 4. 本文主要是构建多个Activity的过程.

  4. C++中的左值和右值

    左值和右值的定义 在C++中,能够放到赋值操作符=左边的是左值,能够放到赋值操作符右边的是右值.有些变量既能够当左值又能够当右值.进一步来讲,左值为Lvalue,事实上L代表Location,表示在内 ...

  5. How To : Create SQL Server Management Studio Addin

    原文 How To : Create SQL Server Management Studio Addin Read the full and original article from Jon Sa ...

  6. ASP.NET MVC项目

    ASP.NET MVC项目里创建一个aspx视图 先从控制器里添加视图 视图引擎选"ASPX(C#)",使用布局或模板页不要选. 在Views\EAV目录里,生成的aspx是个单独 ...

  7. beanutils中类型转换

    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws Servl ...

  8. 使用ServletContext读取properties配置文件

    创建配置文件: 1.在项目的任意地方,右键->New->File->FileName->输入->名称.properties(比如:config.properties) 2 ...

  9. Android之LinkedHashMap实现LRU

    先看下LinkedHashMap的数据结构图 对于LinkedHashMap而言,它继承与HashMap.底层使用哈希表与双向链表来保存所有元素.其基本操作与父类HashMap相似,它通过重写父类相关 ...

  10. RPC(Remote Procedure Call Protocol)

    远程过程调用协议: 1.调用客户端句柄:执行传送参数 2.调用本地系统内核发送网络消息 3.消息传送到远程主机 4.服务器句柄得到消息并取得参数 5.执行远程过程 6.执行的过程将结果返回服务器句柄 ...