当前位置:文档之家› Flex性能,以及文件大小

Flex性能,以及文件大小

本文介绍一下关于flex性能优化,以及flex生成的的swf大小优化.
as3一出来,flex也跟着火一把,目前学习flex的人也越来越多了,但是国内flex的成品确实是很少.比起国外的是相差太多了.
观察了一下现在flex web方面的东西,有3个问题.
a.速度太慢.
b.生成的文件太大,其实加载的速度慢和这个有关系.
c.创意太少.

A-a.速度太慢,其实速度慢有很多方面,先列举先例子吧,程序有问题,swf文件太大等,这些都是速度慢的原因.还有很多暂时不列出.
B-b.生成的文件太大,flex项目刚创建,随便生成一个button,然后观察一下文件的大小,400多K,比较大了吧.就这么一个简单button就这么大.
C-c.这个我不想用太解释了,看看国外的网站就明白了.其实并不是创意多就好,但是国内的东西是模仿为主的.自己的产品太少了.(但是也是有的)

首先先说下Flex项目里程序的性能的调整.

a-1.刚开始编写代码的时候,有的时候会把一个对象重复创建2次,这种情况是存在的,你可以去看看你的项目里有没有这样的情况,用不了多长时间.
a-2.当做一个click事件时,重复加载了数据,但是页面显示的数据是正确的,这种情况也是存在的.我自己遇到过.这在非debug模式下,一般是不会看出来的,
所以要深入下代码进行查询一遍才能看得出代码里面是否有这种问题.
a-3.可以去看下 AS3中的数据存取方式效率比较 这篇文章,我认为里面说的很详细了.地址是:https://www.doczj.com/doc/354870076.html,/archives/kingda/2007/09/as313as3.html
对于几种数据存取方式的正确使用,也会影响flex的性能.
a-4.Flex Bulider3里面有一个profile的这么一个工具,我认为这里主要还是去调整一些没有释放的资源的.从这个工具里可以很清楚的看到哪些资源没有被释放掉.
a-5.URLLoader这个东西相信大家经常用吧,不过我发现在网上搜索到的代码很少有看到,当complete时,很少有看到close掉这个东西或者=null,我觉得这个是有必要做的.
a-6.addEventListener 这个东西,在flex里应该经常用到,但是removeEventListener你想想你使用了嘛,如果没有的话,建议使用上.
a-7.有些数字,具体不列举,as3里的类型有Number,int,uint,都可以用.但是这个不能随便用的. Number 数据类型
在 ActionScript 3.0 中,Number 数据类型可以表示整数、无符号整数和浮点数。
但是,为了尽可能提高性能,应将 Number 数据类型仅用于浮点数,或者用于 int 和 uint 类型可以存储的、大于 32 位的整数值。
要存储浮点数,数字中应包括一个小数点。如果您省略了小数点,数字将存储为整数。
a-8.有些不必要的东西就不必要写了.比如有一个XML,给你XML的一个节点,让你打印出这个个节点里的所有属性,我当时看到这个问题时,连想都没想.
直接while循环,晕,结

果是正确,但是浪费资源.E4X,里是可以直接根据节点找到所有属性的.具体可看下cookbook里的关于XML的解释.
a-9.代码规范,其实这影响不了多少,但是一个良好的代码规范,是对程序有一定的影响的,我开始写程序时,就不太注意这些,但是后来慢慢发现这个的重要性.
a-10.setStyle 这个东西建议最好还是不要使用,因为很消耗资源的.如果不相信的话,自己可以写个例子试一下就知道了.
a-11.FlashType可以内嵌字体,这个东西也会影响性能,我觉得字体用一种就可以了
a-12.使用timer类的时候是否stop了.这个要注意一下,别一直跑了.
a-a:策略优化.
a-a-1:TabNavigator,ViewStack,这些组件,相信大家也多少都用过或者看过.creationPolicy这个属性不知道大家有没有用过,
如果没用过的话,可以看下以下这篇文章 : https://www.doczj.com/doc/354870076.html,/?p=353 里面的方式会对性能有影响.
a-a-2:应该理解Flex UIComponent里的生命周期.具体可以看下以下文章 :
https://www.doczj.com/doc/354870076.html,/blog/248946,
https://www.doczj.com/doc/354870076.html,/index.php/archives/935
a-a-3:做一些数据缓存,具体实现方式有很多用,因人而异.
a-a-4:尽量少使用大容器,比如HBox,VBox这些东西不是很好,容器里比较小的就是canvas,这个东西能满足你大部分的需求。
a-a-5:大家可以去看下有关于Flex的几种传输方式的性能比较: https://www.doczj.com/doc/354870076.html,/index.php/archives/2162
a-a-6:其实byteArray是个好东西.
性能上调整暂时就写这么多,想到其它的再补充一下.

b.下面是对于文件的大小调整

b-1.不管是怎样建立一个flex项目或者是加多少东西,怎么的这个东西生成出来也是得有最少200来K吧,够大,让人很郁闷.
b-2.大部分人应该知道RSL这个东西了,如果不知道的话查一下,这个东西其实并不能缩小大小,只是相当于一个cookies吧.也算有一定的用处了.
b-3.Flex里有一个export-release-Build的功能,用一下吧,能缩小了文件的的大小.
b-4.传输时使用byteArray,进行传输的比较大的内容压缩,也能缩小一些.性能上也有优化.
b-5.自己写as脚本,因为as脚本写出来的组件编译后,和自带的编译之后所生成的大小是不同的,可以测试下,我测试过了是不同的.
b-6.RSL,我觉得大部分人都是用framework.swf这个自带的,生成之后就什么也不管了,我觉得这样做不算是很好的方法,我建议还是把些东西分出来
然后单独去使用,这样的话,加载的速度也很快.如果直接加载一个500多K的东西肯定是慢了,如果分开,10个每次加载50K,速度应该会加快.我是这样认为的.
b-7.降低容器的使用率,也就是说,不要把一个页面里放很多容器,太多了不会有好处的,占资源,占文件大小.
b-8.还有就是a-1,a-2里说的,都会有影响的.
文件的大小调整暂时也就想到这些,想到其它的再加上

吧.

相关主题
文本预览
相关文档 最新文档