在矢量图相当复杂的环境下,即便我们用鼠标在SWF晃悠几下也会导致CPU飙升。而缓存某个层级都不能解决。只能把所有的元件都开启位图缓存……这样性能会提升50%甚至更多。
AS:
- function cacheAllLayerAsBitmap(displayObj:DisplayObjectContainer):void
- {
- var len:int = displayObj.numChildren;
- var mc:DisplayObject;
- for (var i:int = 0; i < len ; i++)
- {
- mc = displayObj.getChildAt( i );
- if(mc == null) continue;
- mc.cacheAsBitmap = true;
- if(mc is DisplayObjectContainer)
- {
- if(DisplayObjectContainer( mc ).numChildren > 0)
- {
- cacheAllLayerAsBitmap( DisplayObjectContainer( mc ) );
- }
- }
- }
- }
用法:
对于单个SWF来说只要在第一帧写上cacheAllLayerAsBitmap(this);
对于大型项目一般都是把SWF加载进来,那么就 cacheAllLayerAsBitmap(DisplayObjectContainer( loader.content )) 完事了
发布的时候切记把调试关掉。且不能在FLASH里直接测试。否则看不到效果。因为FLASH里直接测试影片也会调用DEBUG版本的Flash Player。
测试的时候用release版本的Flash Player进行测试,debug版有些地方没做优化。(重要)