Laya 使list渲染支持分帧的思路
Laya 使list渲染支持分帧的思路
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 }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
2016-09-06 Java 编码 字符集