提高flex应用性能的技巧.doc_第1页
提高flex应用性能的技巧.doc_第2页
提高flex应用性能的技巧.doc_第3页
提高flex应用性能的技巧.doc_第4页
提高flex应用性能的技巧.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

有关提高flex应用性能的技巧1. 不要使用new操作符创建数组,应使用 var a = ; 而不是: var a = new Array(); 2. 创建数组的性能开销很大,请谨慎进行如下操作: var vanityCollection01 : Array = new Array(); var vanityCollection02 : Array = new Array(); var vanityCollection03 : Array = new Array(); var vanityCollection04 : Array = new Array(); 3. 最快的数组复制方法: var copy : Array = sourceArray.concat(); 4. 为数组中的元素赋值都是比较慢的操作,如: employees.push( employee ); employees2 = employee; 5. 从数组中读取元素的速度是为元素赋值速度的2倍: var employee : Employee = employees2; 6. 适当使用静态方法不需要实例化对象,可以提高性能: StringUtils.trim( text with space at end ); Class definition: package public final class StringUtils public static function trim( s : String ) : String var trimmed : String; / implementation. return trimmed; 7.将应用生命周期都不会改变的属性声明为常量: public const APPLICATION_PUBLISHER : String = Company, Inc.; 8. 当确定一个类不会派生子类时,应使用final修饰符: public final class StringUtils 9. 在ActionScript3中,方法和变量的长度不会对性能造成影响: someCrazyLongMethodNameDoesntReallyImpactPerformanceTooMuch(); 10. 在一行代码中进行多个变量赋值不会提高性能: var i=0; j=10; k=200; 11. 使用if语句和switch语句无内存开销的差异: if ( condition ) / handle condition 使用switch语句: switch ( condition ) case A: / logic to handle case A break; case B: / logic to handle case B break; 12.使用if语句时,尽可能地按照最有可能发生的情况的顺序进行判断和处理: if ( conditionThatHappensAlot ) / logic to handle frequently met condition else if ( conditionThatHappensSomtimes ) / handle the case that happens occaisonally else / handle the case that doesnt happen that often 13. AVM 在循环体内部进行计算时,将整型(int)数据提升为浮点型Number进行处理(从版本9到版本10,Actionscript虚拟机已经有所改变,int,uint,number之间的转换速度不再像之前慢了)14. 要解决类型转换,就要先解决未知和不正确的对象类型15. 谨慎使用unit,他可能会较慢(从版本9到版本10,Actionscript虚拟机已经有所改变,int,uint,number之间的转换速度不再像之前慢了) var footerHex : uint = 0x00ccff; 16. 应在for循环中使用int: (var i: int = 0; i n; i+) NOT for (var i: Number = 0; i n; i+) 17. 不要用int类型来表示小数,应使用: var decimal : Number = 14.654; 而不是: var decimal : int = 14.654; 18. 乘法效率高于除法: 不要用 5000/1000 而是: 5000*0.001 19. 如果一个值是通过for或者while语句循环多次计算出来的(或者其他耗费较高性能才能得到的值),而且这个值需要在局部多次使用,那么应当在本地将值存储,而不是每次访问该值时重新计算): for (.) a * 180 / Math.PI; declare: toRadians = a*180/Math.PI; outside of the loop 20. 尽量避免在循环体判断条件中进行计算或者方法调用,应当使用: var len : int = myArray.lengh; for (var i=0;ilen;i+) 而不是: for (var i=0;i myArray.lengh;i+) 21. 使用正则表达式RegEx进行校验,使用字符串的方法进行查找: / postal code validation example using regular expressions private var regEx:RegExp = /A-Z0-9A-Z 0-9A-Z0-9$/i; private function validatePostal( event : Event ) : void if( regEx.test( zipTextInput.text ) ) / handle invalid input case / search a string using String methods var string : String = Search me; var searchIndex : int = string.indexOf( me ); var search : String = string.substring( searchIndex, searchIndex + 2 ); 22.尽量重用对象来保持”内存平衡”,这些对象包括DisplayObjects,URLLoader等. 23. 遵循flex组件模式(失效机制): createChildren(); commitProperties(); updateDisplayList(); 24. 把使用DataGrid组件作为最后的显示手段(如果确信真的没有办法使用常规的手段来实现想要的功能,才使用DataGrid) 25. 避免将Repeaters用于能够滚动的数据 26. 避免使用setStyle()方法(在flex框架中最消耗性能的方法之一) 27. 使用过多的容器将会严重降低系统性能 28. 定义组件时不一定总要使用一个容器来作为该组件的顶级标签,也不一定需要顶级容器标签 29. 清除不必要的容器包装以减少容器的嵌套30. 避免在标签内嵌套Vbox容器(消除冗余) 31. 在mx:Application标签内部尽量避免使用Vbox标签(消除冗余).应当使用: 而不是: 32.设置Repeater的recycleChildren的属性为true可以提高Repeater对象的性能(重新利用已创建的子组件而不是再创建一个新的子组件) 33. 应用的frameRate应设为60fps以内 34. 避免在一帧中进行过多的显示操作35. 对于重复的操作,应使用ENTER_FRAME事件替代Timer事件:public function onEnterFrame( event : Event ) : void private function init() : void addEventListener( Event.ENTER_FRAME, onEnterFrame ); 而不是: public function onTimerTick( event : Event ) : void private function init() : void var timer : Timer = new Timer(); timer.start(); timer.addEventLis

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论