欢迎来到天天文库
浏览记录
ID:10835612
大小:314.19 KB
页数:0页
时间:2018-07-08
《flash_swf程序性能优化-学习笔记大床房 - 副本 (4)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、FlashSWF程序性能优化唐胜凯2012-04-1023:11目录1.代码优化11.1.Vector类与Array类11.2.新的绘图API11.3.处理像素的新方法11.4.事件捕获和冒泡21.5.其他22.资源优化22.1.配置文件压缩下载22.2.将矢量图形平滑处理22.3.采用正确的图片压缩方式32.4.采用轻量级的UI组件32.5.用位图替代矢量图形32.6.位图缓存cacheAsBitmap33.内存优化43.1.选择适当的显示对象43.2.重复利用游戏元素43.3.释放内存43.4.冻结和解冻对象44.渲染优化
2、54.1.重绘区域选项54.2.选择适合你的游戏渲染引擎54.3.其它55.更多的优化65.1.优化网络通信及数据交互65.2.优化音视频69.监测游戏性能的工具6某种优化技巧,可能既优化了CPU也优化了内存,也可能优化了CPU而增加了内存,或优化了内存而增加了CPU。要具体情况具体分析。1.代码优化1.1.Vector类与Array类FlashPlayer10引入了Vector类,其读写访问速度比Array类更快。varcoordinates:Array=newArray();varstarted:Number=getTim
3、er();for(vari:int=0;i<300000;i++){coordinates[i]=Math.random()*1024;}trace(getTimer()-started);//output:107èvarcoordinates:Vector.=newVector.();varstarted:Number=getTimer();for(vari:int=0;i<300000;i++){coordinates[i]=Math.random()*1024;}trace(getTime
4、r()-started);//output:72尽可能尝试使用Vector对象API,因为它们的运行速度可能更快。以后就改用Vector,实在不行时,再用Array。1.2.新的绘图APIFlashPlayer10提供了一个Script执行性能越好。1.3.处理像素的新方法FlashPlayer10引入了快速绘制及读取像素的方式:setVector()、getVector()。如果使用setPixel()或setPixel32(),请使用lock()和unlock()。减少遍历像素的次数。配合Vector类来提高像素处理速度。
5、1.4.事件捕获和冒泡ActionScript3.0中的事件模型引入了事件捕获和事件冒泡的概念。for(vari:int=0;i6、++){……}使用事件捕获和冒泡可以最大程度地减少事件处理。1.5.其他利用mouseEnabled和mouseChildren属性禁用鼠标交互。对于TextField,使用appendText()方法,而不要使用+=运算符。将重复使用的变量定义在循环之外。尽可能避免使用中括号[]运算符。对while循环使用相反的顺序(while(--i>-1){})对文本基本搜索和提取时,使用String类方法而非正则表达式。使用位移运算符(<<,>>)替换乘除运算符(*,/)。尝试各种代码编写方式,反复对比,找到适合自己游戏的优化。2.资7、源优化2.1.配置文件压缩下载2.2.将矢量图形平滑处理使用FlashProfessional或Illustrator减少矢量图形的控制点。简化矢量图形的复杂路径可以大大提高游戏的平均帧速率。其实是降低了CPU占用。2.3.采用正确的图片压缩方式Fireworks可以用PNG8格式高效的压缩带Alpha通道的图片。2.4.采用轻量级的UI组件大量使用UI组件是隐形的效率杀手。采用传统的button,Sprite等代替某些组件。2.5.用位图替代矢量图形将滤镜特效在图片处理过程中添加。创建合适大小的位图。2.6.位图缓存cach8、eAsBitmap对自身无动画的MC进行位图缓存。更改对象的x和y属性不会导致重新生成缓存位图。旋转、缩放对象或更改其alpha值的行为都将重新生成缓存的位图,从而降低性能。AIR或PackagerforiPhonePreview中提供的DisplayObject.cache
6、++){……}使用事件捕获和冒泡可以最大程度地减少事件处理。1.5.其他利用mouseEnabled和mouseChildren属性禁用鼠标交互。对于TextField,使用appendText()方法,而不要使用+=运算符。将重复使用的变量定义在循环之外。尽可能避免使用中括号[]运算符。对while循环使用相反的顺序(while(--i>-1){})对文本基本搜索和提取时,使用String类方法而非正则表达式。使用位移运算符(<<,>>)替换乘除运算符(*,/)。尝试各种代码编写方式,反复对比,找到适合自己游戏的优化。2.资
7、源优化2.1.配置文件压缩下载2.2.将矢量图形平滑处理使用FlashProfessional或Illustrator减少矢量图形的控制点。简化矢量图形的复杂路径可以大大提高游戏的平均帧速率。其实是降低了CPU占用。2.3.采用正确的图片压缩方式Fireworks可以用PNG8格式高效的压缩带Alpha通道的图片。2.4.采用轻量级的UI组件大量使用UI组件是隐形的效率杀手。采用传统的button,Sprite等代替某些组件。2.5.用位图替代矢量图形将滤镜特效在图片处理过程中添加。创建合适大小的位图。2.6.位图缓存cach
8、eAsBitmap对自身无动画的MC进行位图缓存。更改对象的x和y属性不会导致重新生成缓存位图。旋转、缩放对象或更改其alpha值的行为都将重新生成缓存的位图,从而降低性能。AIR或PackagerforiPhonePreview中提供的DisplayObject.cache
此文档下载收益归作者所有