1. 对美工素材使用合适的类型
简单对象使用Vector,复杂图形则用jpg或者png文件类型。重绘和图形相关函数调用是最耗费处理器资源的操作。因此需要在重绘上进行改善。到文件->发布设置->Flash选项卡->生成大致素材修改报告里查看内存消耗情况。
2. 缓存合适的对象
缓存那些最耗费资源的对象便于重绘。将对象缓存到内存,如果是静态的那就只需要重绘一次。滤镜效果会缓存对象的产生,如果同时有很多滤镜应用,它们可能会导致内存问题。如果缓存的对象是动画、放缩、旋转等图形操作,那对处理器的确是个很大负担。
3. 现在添加到舞台上的美术素材
没必要遍历重绘那些没用或者没激活的节点。如果一个对象不经常可见,我会直接彻底销毁它然后再需要时候重新创建即可。此条最实用的地方就是菜单系统。
4. 不需要的事件关闭
事件派发是最耗费函数调用的操作之一。每个继承InteractiveObject类的类都会生成大量不需要的基类事件。花时间将MouseEnabled和MouseChildren设为false来保证事件系统尽量简洁。在不需要的时候将事件监听和EnterFrame事件删除哦。
5. 避免使用遮罩
如果需要给一个正方形区域做一个遮罩,可以使用显示对象的scrollRect属性来代替。如果需要非正方形的遮罩,可以将shape放在有scrollRect属性的对象上。
6. 不必需的操作和函数调用
能用乘法尽量不用除法。与其调用Flash的Math类的floor和round算法倒不如自己计算。将If语句排好序一边最可能的比较得到true。For跟while语句中只保存函数值而不是重复获取,也需要尽量重用对象。跟类型提示类似,函数调用也不需要太担心,但是在循环里如果迭代数百次则需要注意了,那可是很多的差别哦。
7. 解决类型提示、未知、不正确对象类型
AS耗费大量时间来检测一个不理解的对象类型,或者强制转换对象类型。因此需要在函数参数及返回类型时注意对象类型。虽然对象类型兼容性改变不会节省大量时间。但是很多时候需要做数千次来查看这其中的性能差别。
8. Sprite和MovieClip
如果有多个帧的话,此时需要使用MovieClip,其他时候只需要继承Sprite即可。
9. 不必要的导入
除非创建了大量类的实例并且有大量函数调用,否则这不会节省很多时间。但却是个很简单的提示性能的方式。
10. 确定是性能问题而不是内存问题
首先需要确定问题的来源。如果是因为引用素材或其他处理过程中大量耗费内存的操作用光了所有可用的RAM(内存),那CPU在请求获取数据的时候肯定会很慢。如果应用随着时间不断变慢,那可能是因为对象建立后忘记释放导致的内存泄露。只需要很简单的看下使用的内存量即可判断。Flash里面可以调用System.totalMemory来查看。或者直接在进程管理器里查看网页的占用内存。