Laya 使list渲染支持分帧的思路

Laya 使list渲染支持分帧的思路

@author ixenos 2019-09-06

 

 

1.由于Laya的list渲染时没有做分帧处理,只做了延迟帧处理,所以当单页元素较多时,会有大量运算卡帧的情况,

结合之前 Laya 分帧加载优化 这篇文章,对其中renderItems做出优化

 

2.原renderItems:

复制代码
 1         /**
 2          * @private
 3          * 渲染单元格列表。
 4          */
 5         protected function renderItems(from:int = 0, to:int = 0):void {
 6             for (var i:int = from, n:int = to || _cells.length; i < n; i++) {
 7                 renderItem(_cells[i], _startIndex + i);
 8             }
 9             changeSelectStatus();
10         }
复制代码

 

3.分帧方案:

复制代码
 1         private var _latterFrom:int = 0;
 2         private var _latterTo:int = 0;
 3         protected function renderItems(from:int = 0, to:int = 0):void {
 4             _latterFrom = from;
 5             _latterTo = to;
 6             Laya.timer.clear(this, onLatterFrames);
 7             Laya.timer.frameLoop(1, this, onLatterFrames);
 8         }
 9         
10         private var _renderSt:Number = 0;
11         private var _renderTLimit:Number = 0;
12         public var latterFrameRatio:Number = 0.8;//运行时脚本占帧时间比,这个用来调优 --ixenos
13         protected function onLatterFrames():void {
14             _renderTLimit = 1000/60*latterFrameRatio;
15             _renderSt = new Date().getTime();
16             _latterTo = _latterTo>0?_latterTo:_cells.length;
17             for (var i:int = _latterFrom; i < _latterTo; i++) {
18                 var curT:Number = new Date().getTime();
19                 if(curT - _renderSt > _renderTLimit){
20                     _latterFrom = i;//暂存进度
21                     return;
22                 }
23                 renderItem(_cells[i], _startIndex + i);
24                 changeCellState(_cells[i], _selectedIndex === _startIndex + i, 1);
25             }
26             Laya.timer.clear(this, onLatterFrames);
27         }
复制代码

 

 
posted @   ixenos  阅读(1017)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
历史上的今天:
2016-09-06 Java 编码 字符集
点击右上角即可分享
微信分享提示