常用 flash CPU占用和内存问题优化

 
常用的方法

1. 及时removeChild,在第二次加载前先removeChild.然后再addChild
2. 实例化在构造函数中实例化。在别的方法中实例化的,先判断是否存在,如果有就不实例化了。确保并且只有一次。
3. 注册的事件。用完了在回调函数就删除。要养成好习惯:)
4. 改进算法,无论对于那一种程序,好的算法总是非常重要的,而且能够极大地提高程序性能,所以任何性能的优化第一步就是从算法或者说程序逻辑的优化开始,检查自己的程序是否有多余的运算,是否在没有必要的时候做了无用功,往往从这些方面就能找到那些导致性能低下的地方。
5. 优化细节代码,有一些小技巧比如:
    用 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 如果不是为了保存颜色值请不要适用uint这个类型,他的速度比起 int要慢多了;
    Array的遍历要比Object或者Dictionary的枚举要快得多。
    if (myObj != null) 要比 if (myObj) 的速度要慢
    for (var i:* in myObj) 比 for (var i:String inmyObj) 要快;
    Dictionary当 weak key设置为 true 的时候要比 false 慢;
    var myText:String = "a" + "b" + "c";
     var myText2:String = [ "a", "b", "c" ].join("");
     在JavaScript里面在IE下后者要更快,但是在AS里面,前者更快!
    在循环体内声明变量和在循环体外声明变量其实速度上不会有太大的区别。

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

7. 清除冗余的代码,有些代码可能你的程序一辈子也不会执行到,请把这些没有用的代码或者对象清理掉,否则内存会被偷偷的蚕食掉。
8. 小心使用useBitmapCache = true 一般情况下除非你确定这个显示对象不可能发生变化那么用用也无妨,不过我更推荐自己手动的用BitmapData将该对象Draw一遍,然后让这个对象彻底消失。否则每次的变动都是巨大的性能消耗。

9. 关于存储  使用适当的Display Object
   Shape – 没有交互(占内存少)
  Sprite – 有交互(占内存多)
  MovieClip – 有时间线(占内存更多)
10.  尽可能重用对象,而不要重新创建
11.  强制类型转换int(exp)要比Math.floor()和Math.ceil()快很多
12. 释放内存 – 将所有对象的引用设置为null
13.  即便将一个Display Object从stage上移除了(removeChild)甚至是已经将它的引用设置为null,它依然有可能在消耗CPU。所以要在其移出display list时将其完全停下来(比如mc.stop())。
14. 尽可能禁用鼠标交互。obj.mouseEnabled = false; obj.mouseChildren = false;
15. Timer在某些情况下比ENTER_FRAME要好。
16.  减少tweening的使用。

17. flash性能最低的地方依然在于图形渲染,所以各种循环之中如果可以不包含图形变化就不要包含。把图形变换放到数据运算之后,渲染速度从9秒多降低到0.4秒不到。
18. 循环的速度,有人测出来是for each最快,for其次,while最慢。这个姑且相信吧,因为和我测出来的差不多。
19. 数字类型的效率,int最高,number其次,uint最低。这个和as3刚出现时大家说的,能uint就uint完全不一致,uint甚至无法超过number。所以,循环的时候应该是:
(1)如果要存储的东西是对象,可以放在一个数组里面进行处理,需要循环的时候,可以用数组方法比如说every;同时,如果存储的对象包含自己的方法,则可以用for each (var _obj:* in _arr){_obj.method();}这样的方法。
(2)如果存储的是普通数据,可以尽量用for(var i:int=0,len:int=_arr.length;i

20. 透明(alpha),渐变都是flash性能的杀手,更不要提柔化填充边缘了

21. 元件在地图上面不要缩放和扩大,虽然矢量的优点就是可以随意的扩大的缩放,但大家做成元件时就应该考虑到大小的问题,要修改的话,不要在舞台上操作,应该进到元件里面修改,虽然只是一个双击的问题,但对结果的影响却不是一般的大。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值