天天看点

AS3程序性能优化建议

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. 确定是性能问题而不是内存问题

继续阅读