实现优化算法
在这个单元,我会开始做一些内存管理的指导,下面单元标题的顺序是按照首字母排序的。然后为了这个目的,我会提供有关CPU/GPU管理信息的子标题来探讨。
也许我们会觉得提供两个单元的技术是合理的。但是,如果你通读完这篇文章,知道了用内存管理影响CPU/GPU的方法,那么列出的内存管理的建议,可以和CPU/GPU单元里列出的方法一起使用,这样效果会更好。
在为你提供特定的最佳实现方法之前,我认为技术问题同样重要,知道的多了你就学的轻松,反之就会很累。我同样会列第二个清单,它会按技术获益的优先级次序从高到低排列。
记住这些清单是主观的。它的顺序是依据个人开发经验和能力来定的,还有测试情形和测试环境。
应用的优化技术从易到难排列
1.不要使用滤镜
2.尽可能使用倒序for循环,避免使用do循环和while循环
3.明确的停止使用Timer,以便垃圾回收
4.使用弱引用时间侦听器,当不用的时候移除
5.尽可能在任何时候严格定义变量类型
6.当不需要鼠标交互的时候明确的禁用鼠标交互
7.尽可能在任何时候使用回调函数来取代dispatchEvent(继承的)类
8.不需要声音时停止Sound类,以便垃圾回收Sound(继承的)类和SoundChannel(继承的)类
9.尽量让每一个所需的元素使用最基本的DisplayObject类
10.Air应用(移动设备)总是使用cacheAsBitmap 和cacheAsBitmapMatrix (前一个是位图缓存,后一个是位图矩阵缓存?我没用过)
11.尽可能在任何时候重新使用Object
12.Event.ENTER_FRAME循环:使用不同的侦听器和不同的侦听函数应用在尽可能少的DisplayObjects 上
13.用PoolObject(对象池)取代创建和垃圾回收Object
14.使用局部位图传输(块传输)
15.使用阶段的块传输
16.使用Stage3D
优化技术后好处由大到小排列
1.使用阶段的块传输(如果有足够的系统内存)
2.使用Stage3D
3.使用局部位图传输(块传输)
4.在移动设备上使用cacheAsBitmap 和cacheAsBitmapMatrix
5.当鼠标交互不需要的时候明确的禁用鼠标交互
6.不要使用滤镜
7.需要的时候使用最基本的DisplayObject类
8.尽量在任何时候重新利用对象
9.Event.ENTER_FRAME循环:使用不同的侦听器和侦听函数,他们最好应用在尽可能少的DisplayObjects 上
10.尽可能使用倒序for循环,避免使用do循环和while循环
11.用PoolObject(对象池)取代创建和垃圾回收Object
12.尽可能在任何时候严格定义变量类型
13.使用弱引用时间侦听器,当不用的时候移除
14.尽可能在任何时候使用回调函数来取代dispatchEvent(继承的)类
15.明确的停止使用Timer,以便垃圾回收
16.不需要声音时停止Sound类,以便垃圾回收Sound(继承的)类和SoundChannel(继承的)类
记住这些优先级排序,然后前进到下个单元,学习如何更新你的Flash工程来更有效率的管理内存。
原文出自:http://bbs.9ria.com/thread-157034-1-1.html
3630

被折叠的 条评论
为什么被折叠?



