flex性能优化。
flex吧
全部回复
仅看楼主
level 7
1.灵活使用CacheAsBitmap
在显示对象中,不论是Sprite,MovieClip还是Loader都不及Bitmap的渲染效率高。
“为包含复杂的矢量图形(例如文本或渐变)的动画对象打开位图缓存可提高性能。但是,如果在显示对象(如播放其时间轴的影片剪辑)中启用了位图缓存,您将获得相反的效果。”
这句话的意思是说,对于一个无动画的静态对象,如背景图,静态文本还有一些只可能改变x,y位置而不改变外观的显示对象等设置CacheAsBitmap属性为true后可明显减小CPU负荷,在每一帧都来后FP不会渲染那些设置了CacheAsBitmap的静态图像(除非它的外形发生了改变,改变rotation、scaleX、scaleY等属性也等同于改变了外形),但是会增加内存的占用量,不过这绝对是一个划算的买卖。上面这句话的后半句意思是不要为一个频繁改变外形的显示对象设置CacheAsBitmap属性,否则将会让CPU使用量不降反升。
2013年07月15日 13点07分 1
level 7
2.误区:不在屏幕上显示的对象也会一直消耗CPU
为一个比屏幕尺寸大的容器(如Sprite或MovieClip等)增加多个子显示对象,比如屏幕大小500 * 500,我为它addChild一个2000 * 2000的Spirte,这个Sprite中存在多个DisplayObject并分布于各个位置。有人认为那些不在屏幕上显示的对象也会消耗CPU,降低性能,所以想把超出屏幕范围的显示对象removeChild掉,不过经实验证明这是多此一举,FP只渲染屏幕可见的区域,即使你移除了屏幕外的显示对象,CPU消耗率也不会下降。
2013年07月15日 13点07分 2
level 7
3.避免大材小用
像Sprite,MovieClip,Loader这些类属于比较高等的显示对象,其中会包含更多的信息占用更多的内存和CPU使用量。如果Shape类足矣满足需求就不要用Sprite,如果Bitmap类足矣满足需求就不要用MovieClip,如果Loader加载完毕请不要直接把Loader加入到显示列表中而是把LoderInfo中的信息content取出,加载的是图片就存储成Bitmap,是声音就存储成Sound,是动画就存储成MovieClip,是简单图像就存储成Shape,之后把存储的对象添加到显示列表中去。如果一定要用到这些高等显示对象,也请在可能的情况下设置CacheAsBitmap。
2013年07月15日 13点07分 3
level 7
我只是边看边转,嘿嘿。
2013年07月15日 13点07分 4
level 9
写得不错。
2013年07月25日 09点07分 6
1