1.避免容器的深层嵌套(因为每个容器都会对其子容器进行计算和调整,一般建议HBox,VBox最好不要超过3层,但对于复杂系统这个很难避免)
2.对于容器和空间的位置和尺寸尽量采用绝对坐标和硬编码。(减少Flash Player深层次的嵌套计算)
2.对于容器和空间的位置和尺寸尽量采用绝对坐标和硬编码。(减少Flash Player深层次的嵌套计算)
3.合理恰当的使用Grid容器,对于能用普通容器如HBox,VBox实现的尽量不要采用Grid(Grid嵌套层次深)
合理使用Array和ArrayCollection及DataGrid和AdvancedDataGrid,前者满足要求就不要使用后者
合理使用bindable,滥用导致内存泄漏
4.避免使用重复、冗余的容器嵌套,如: 1) 在Panel,Application中添加一层VBox,Panel,Application本来就是继承于VBox的,添加无谓的VBox只能降低你系统的性能。 2) 对于自定义的容器减少重复多余的父容器,比如: <mx:VBox backgroundColor=" #FFCCCC" borderStyle=" solid"> <myComponent xmlns=" *" /> </mx:VBox> 你完全可以采用下面的写法,对于myComponents可能它本身就是VBox <myComponent xmlns=" *" backgroundColor=" #FFCCCC" borderStyle="solid" /> 5.延迟实例化导航类容器(Deferred Instantiation Navigator Containers) 如ViewStack,Accordion,TabNavigator等,本身就提供了延迟实例化的功能,你只需要修改其creationPolicy='auto'即可,它将只实例化第一个要显示的子控件,其余的将在需要的时候实例化。 6.对于flex的效果(Effects)要做到尽量平滑(Smoothly),比如延长它的持续时间(duration),避免使用bmp格式的图片作背景。 7.对于DataGrid的复杂ItemRenderer,尽量用Canvas而不是VBox or HBox 8.如果DataGrid的ItemRenderer是ComboBox等,尽量用ItemEditor而不是ItemRenderer,只有当选中的cell才会显示其Renderer(避免一次性把所有的cell Renderer都画出来) 9.记得随时Remove 没有用的Listener或采用弱引用,这个我在事件机制中提到过(URL...); null不用的变量和数组。 10.对于大批量的数据采用需要的时候去取或者分页 11.提前声明频繁使用的变量,如: var l:int=list.length; var w:int = stage.stageWidth; for(var i : int=0; i < l; i++){ list[i].x = w -100; } 12.这样也能提高Flex的性能,可能很多人都会不屑,但至少对于Flex来讲它能减少不必要的计算,改善性能,另外和代码组织有关的建议,如: 1) 系统性的常量写在一个常量类里头并用const关键字,一些ItemRenderer代码尽量独立成一个文件而不是直接到处都写 2) 不要在界面元素中引用一大串的parent.parent.parent...,一旦界面重新组织将给你带来很大麻烦。如果你用Cairngorm框架,那么就应该用ViewHelper,尽量的松耦合你的代码。 13.如果你用FDS,那么尽量用Remote Object 而不是Http Service or Web Service,因为前者的效率最高 14.对你的系统进行压力测试,Adobe有一个测试工具,叫Flex Stress Testing Framework (rul:http://labs.adobe.com/wiki/index.PHP/Flex_Stress_Testing_Framework). 它能提供对RPC中的RTMP, AMF,HTTP测试,一般的商业测试软件不支持前两者的测试, 该软件完全免费,你可以到Adobe官网上下(URL: http://download.macromedia.com/pub/labs/flexstress/flex_stressfw_p2_060407.zip)版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。