- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Flash_SWF程序性能优化-学‘;离开家笔记大就
FlashSWF程序性能优化唐胜凯2012-04-1023:11目录1.代码优化 11.1.Vector类与Array类 11.2.新的绘图API 11.3.处理像素的新方法 11.4.事件捕获和冒泡 21.5.其他 22.资源优化 22.1.配置文件压缩下载 22.2.将矢量图形平滑处理 22.3.采用正确的图片压缩方式 32.4.采用轻量级的UI组件 32.5.用位图替代矢量图形 32.6.位图缓存cacheAsBitmap 33.内存优化 43.1.选择适当的显示对象 43.2.重复利用游戏元素 43.3.释放内存 43.4.冻结和解冻对象 44.渲染优化 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=getTimer();for(vari:int=0;i300000;i++){coordinates[i]=Math.random()*1024;}trace(getTimer()-started);//output:107varcoordinates:Vector.Number=newVector.Number();varstarted:Number=getTimer();for(vari:int=0;i300000;i++){coordinates[i]=Math.random()*1024;}trace(getTimer()-started);//output:72尽可能尝试使用Vector对象API,因为它们的运行速度可能更快。以后就改用Vector,实在不行时,再用Array。1.2.新的绘图API行越少,ActionScript执行性能越好。1.3.处理像素的新方法FlashPlayer10引入了快速绘制及读取像素的方式:setVector()、getVector()。如果使用setPixel()或setPixel32(),请使用lock()和unlock()。减少遍历像素的次数。配合Vector类来提高像素处理速度。1.4.事件捕获和冒泡ActionScript3.0中的事件模型引入了事件捕获和事件冒泡的概念。for(vari:int=0;iMAX_NUM;i++){……//侦听鼠标点击事件,给每个敌人添加enemy.addEventListener(MouseEvent.CLICK,onEnemyClick);}……//只给敌人容器添加,因为事件可以冒泡container.addEventListener(MouseEvent.CLICK,onEnemyClick,true);for(vari:int=0;iMAX_NUM;i++){……}使用事件捕获和冒泡可以最大程度地减少事件处理。1.5.其他利用mouseEnabled和mouseChildren属性禁用鼠标交互。对于TextField,使用appendText()方法,而不要使用+=运算符。将重复使用的变量定义在循环之外。尽可能避免使用中括号[]运算符。对while循环使用相反的顺序(while(--i-1){})对文本基本搜索和提取时,使用String类方法而非正则表达式。使用位移运算符(,)替换乘除运算符(*,/)。尝试各种代码编写方式,反复对比,找到适合自己游戏的优化。2.资源优化2.1.配置文件压缩下载2.2.将矢量图形平滑处理使用FlashProfessional或Illustrator减少矢量图形的控制点。简化矢量图形的复杂路径可以大大提高游戏的平均帧速率。其实是降低了CPU占用。2.3.采用正确的图片压缩方式Fireworks可以用PNG8格式高效的压缩带Alpha通道的图片。2.4.采用轻量级的UI组件大量使用UI组件是隐形的效率杀手。采用传统的button,Sprite等代替某些组件。2.5.用位图替代矢量图形将滤镜特效在图片处理过程中添加。创建合适大小的位图。2.6.位图缓存cacheAsBitmap对自身无动画的MC进行位图缓存。更改对象的x和y属性不会导致重新生成缓存位图。旋转、缩放对象或更改其alpha值的行为都将重新生成缓存的位图,从而降低性能。AIR或PackagerforiPhonePreview中提供的DisplayObject.
原创力文档


文档评论(0)