精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-17
vii779 写道 znjq 写道 mice_003 写道 基本可以无视,你会用10000+个文本么/1000个Sprite?so...
醒醒吧... 你不用不代表别人不会用到. 况且楼主在做测试.看不懂么? 试了一下,在小数量级别上(1000以下),10.0和10.1没有太大差距,相差也就10ms左右,500级别以下,几乎没什么差距了。如果在这个级别(大部分应用也是在这个级别上)上做优化,是没有太大的余地了。 znjq你用到的TextField大概在500级别以下吧,所以感觉不出来有多大性能提升。 不过TextLine在小数量级别下,还是比TextFied快些。可以试试用TextLine取代TextField 是的.没有那么多的.大概300以下.滚动的时候动态设置text,并不是全部设置,只设置变化的,没变化的只做位移. 可能我对性能要求比较苛刻吧.暂时没有达到心目中的理想效果. 3Q,回头试试TextLine |
|
返回顶楼 | |
发表时间:2010-05-17
最后修改:2010-05-17
flash10 迅雷软件升级提示是这样写的:
该版本在winodw7+ie8下可能存在flash显示不正常,不建议该环境的用户升级 |
|
返回顶楼 | |
发表时间:2010-05-17
最后修改:2010-05-17
znjq 写道 vii779 写道 znjq 写道 mice_003 写道 基本可以无视,你会用10000+个文本么/1000个Sprite?so...
醒醒吧... 你不用不代表别人不会用到. 况且楼主在做测试.看不懂么? 试了一下,在小数量级别上(1000以下),10.0和10.1没有太大差距,相差也就10ms左右,500级别以下,几乎没什么差距了。如果在这个级别(大部分应用也是在这个级别上)上做优化,是没有太大的余地了。 znjq你用到的TextField大概在500级别以下吧,所以感觉不出来有多大性能提升。 不过TextLine在小数量级别下,还是比TextFied快些。可以试试用TextLine取代TextField 是的.没有那么多的.大概300以下.滚动的时候动态设置text,并不是全部设置,只设置变化的,没变化的只做位移. 可能我对性能要求比较苛刻吧.暂时没有达到心目中的理想效果. 3Q,回头试试TextLine 滚动的时候,累计起来要设置的数据量远远要大于300,如果数据很多,滚动又很快的话,瞬间要设置的值可能会过万的,TextFied性能跟不上,就会出现卡的情况。你现在的算法就是避免瞬间设置大量的值吧,不过滚动的越快,变化的也就越多,累计起来到了一定的量,还是会出现卡的情况。不知道你是不是在收到滚动事件以后就立即设置数据了,可以考虑在滚动事件里面只记录下当前的位置,另外的一个定时器,隔一段时间,检查滚动位置是否变化,并根据当前的滚动位置来设置数据,调整好一个合适的间隔值,以达到平滑滚动的效果。 |
|
返回顶楼 | |
发表时间:2010-05-17
最后修改:2010-05-17
vii779 写道 znjq 写道 vii779 写道 znjq 写道 mice_003 写道 基本可以无视,你会用10000+个文本么/1000个Sprite?so...
醒醒吧... 你不用不代表别人不会用到. 况且楼主在做测试.看不懂么? 试了一下,在小数量级别上(1000以下),10.0和10.1没有太大差距,相差也就10ms左右,500级别以下,几乎没什么差距了。如果在这个级别(大部分应用也是在这个级别上)上做优化,是没有太大的余地了。 znjq你用到的TextField大概在500级别以下吧,所以感觉不出来有多大性能提升。 不过TextLine在小数量级别下,还是比TextFied快些。可以试试用TextLine取代TextField 是的.没有那么多的.大概300以下.滚动的时候动态设置text,并不是全部设置,只设置变化的,没变化的只做位移. 可能我对性能要求比较苛刻吧.暂时没有达到心目中的理想效果. 3Q,回头试试TextLine 滚动的时候,累计起来要设置的数据量远远要大于300,如果数据很多,滚动又很快的话,瞬间要设置的值可能会过万的,TextFied性能跟不上,就会出现卡的情况。你现在的算法就是避免瞬间设置大量的值吧,不过滚动的越快,变化的也就越多,累计起来到了一定的量,还是会出现卡的情况。不知道你是不是在收到滚动事件以后就立即设置数据了,可以考虑在滚动事件里面只记录下当前的位置,另外的一个定时器,隔一段时间,检查滚动位置是否变化,并根据当前的滚动位置来设置数据,调整好一个合适的间隔值,以达到平滑滚动的效果。 间隔值的做法我有考虑过,可是合适的间隔值应该和本机的性能有关系,很难确定一个合适的值. 滚动条的算法我已经优化很多了.因为做一个类似excel的表格,所以滚动条并不是每移动1px都触发渲染事件的.而是移动一定距离,比如一列的宽度后才触发的.所以除非移动特别快(或者滚动条的宽度很小)才可能出现堵塞的情况. 每次触发事件,也并不是直接调用渲染事件(这样会很卡) 而是增加ENTER_FRAME的一个函数 private function invalidLayout():void { if(!invalid){ invalid=true; addEventListener(Event.ENTER_FRAME,onInvalidateLayout); } } private function onInvalidateLayout(event:Event):void{ removeEventListener(Event.ENTER_FRAME,onInvalidateLayout); layout(); invalid=false; } 而且并不是每个TextField滚动的时候都设置的,我做了判断只对新出现的cell进行设置,其他的只是做位移. 所有的textfield也是缓存重复使用,滚动的时候不再创建新的TextField. 我的帧数设置大概30帧,全部英文的情况下滚动大概能跑到27-28帧,中文情况下大概只有14-15帧 卡倒是不卡,就是滚动的时候还是稍微有点延迟感.以后慢慢加上其他功能的话,这种滞后感可能就会更明显. |
|
返回顶楼 | |
发表时间:2010-05-17
znjq 写道 vii779 写道 znjq 写道 vii779 写道 znjq 写道 mice_003 写道 基本可以无视,你会用10000+个文本么/1000个Sprite?so...
醒醒吧... 你不用不代表别人不会用到. 况且楼主在做测试.看不懂么? 试了一下,在小数量级别上(1000以下),10.0和10.1没有太大差距,相差也就10ms左右,500级别以下,几乎没什么差距了。如果在这个级别(大部分应用也是在这个级别上)上做优化,是没有太大的余地了。 znjq你用到的TextField大概在500级别以下吧,所以感觉不出来有多大性能提升。 不过TextLine在小数量级别下,还是比TextFied快些。可以试试用TextLine取代TextField 是的.没有那么多的.大概300以下.滚动的时候动态设置text,并不是全部设置,只设置变化的,没变化的只做位移. 可能我对性能要求比较苛刻吧.暂时没有达到心目中的理想效果. 3Q,回头试试TextLine 滚动的时候,累计起来要设置的数据量远远要大于300,如果数据很多,滚动又很快的话,瞬间要设置的值可能会过万的,TextFied性能跟不上,就会出现卡的情况。你现在的算法就是避免瞬间设置大量的值吧,不过滚动的越快,变化的也就越多,累计起来到了一定的量,还是会出现卡的情况。不知道你是不是在收到滚动事件以后就立即设置数据了,可以考虑在滚动事件里面只记录下当前的位置,另外的一个定时器,隔一段时间,检查滚动位置是否变化,并根据当前的滚动位置来设置数据,调整好一个合适的间隔值,以达到平滑滚动的效果。 间隔值的做法我有考虑过,可是合适的间隔值应该和本机的性能有关系,很难确定一个合适的值. 滚动条的算法我已经优化很多了.因为做一个类似excel的表格,所以滚动条并不是每移动1px都触发渲染事件的.而是移动一定距离,比如一列的宽度后才触发的.所以除非移动特别快(或者滚动条的宽度很小)才可能出现堵塞的情况. 每次触发事件,也并不是直接调用渲染事件(这样会很卡) 而是增加ENTER_FRAME的一个函数 private function invalidLayout():void { if(!invalid){ invalid=true; addEventListener(Event.ENTER_FRAME,onInvalidateLayout); } } private function onInvalidateLayout(event:Event):void{ removeEventListener(Event.ENTER_FRAME,onInvalidateLayout); layout(); invalid=false; } 而且并不是每个TextField滚动的时候都设置的,我做了判断只对新出现的cell进行设置,其他的只是做位移. 所有的textfield也是缓存重复使用,滚动的时候不再创建新的TextField. 我的帧数设置大概30帧,全部英文的情况下滚动大概能跑到27-28帧,中文情况下大概只有14-15帧 卡倒是不卡,就是滚动的时候还是稍微有点延迟感.以后慢慢加上其他功能的话,这种滞后感可能就会更明显. 先完成功能再说,等Flash的性能再上一个台阶吧,现在凑合一下还是可以接受的,个人感觉性能还远远不如原来传统的桌面程序。 |
|
返回顶楼 | |
发表时间:2010-05-17
看大家说的 我都不想用flash了
|
|
返回顶楼 | |
发表时间:2010-05-18
Flash10.1采用了直接调用显卡驱动接口进行图形渲染的机制。而以前的版本则是调用操作系统GUI的接口,故此,渲染性能有了很大提升。
|
|
返回顶楼 | |
发表时间:2010-05-18
这是Flex框架的福音,UI体验上会有巨大的改善。
Flash Player9以后,速度已经很不错,但包装n层的Flex UI在响应速度上的交互体验确实不好,这回应该有大的改善,至少普通用户不会感觉比传统HTML拼出的UI慢太多。 |
|
返回顶楼 | |
发表时间:2010-05-18
菜鸟路过,顺便拜膜一下个大神,,,哈哈
|
|
返回顶楼 | |
发表时间:2010-05-18
比较了一下Html5 canvas 的fillText方法,和Flash 10.1 的TextFied的text属性
用chrome4.1做的测试,两者相差不大500段文本只相差几毫秒,上万级别的也就相差几十毫秒,看看大家都在同一起跑线上。 |
|
返回顶楼 | |