优化Flash性能(二)

实现优化算法

在这个单元,我会开始做一些内存管理的指导,下面单元标题的顺序是按照首字母排序的。然后为了这个目的,我会提供有关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工程来更有效率的管理内存。



发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(Spamcheck Enabled)