码迷,mamicode.com
首页 > 其他好文 > 详细

Egret 组件顺序排列时的 drawCall 优化思路

时间:2020-04-14 12:55:16      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:class   eui   oba   hang   nbsp   OLE   children   过程   false   

竖屏项目中 垂直排序,或者 横向排序 的scoller 或者 list 组件可用

思路 :  滚动过程中, 超出 用户可视区域的部分 组件进行掩藏, 滚动到可视区域前后一定范围再进行显示

滚动事件:

this.MainList.addEventListener(eui.UIEvent.CHANGE, (e) => {}, this);

获取Scroller中某个子组件 相对于 用户可视区域的 坐标

let point = self.MainListBox.localToGlobal(item.x, item.y)

控制显示隐藏: 是用的是 <Component>.visible = <boolean>

let res;
if (point.y < 0 - item.height * 2 || point.y > self.stage.stageHeight + item.height * 2) {
    Log(item[‘floor‘], ‘需要隐藏‘, point.x, point.y)
    res = false;
} else {
    Log(item[‘floor‘], ‘需要显示‘, point.x, point.y)
    res = true;
}
item[‘showhide‘](res); //<Component>.visible = <boolean>

示例代码:

let self = this
self.MainList.addEventListener(eui.UIEvent.CHANGE, (e) => {
    self.MainListBox.$children.forEach((item, i) => {
        let point = self.MainListBox.localToGlobal(item.x, item.y)
        let res;
        if (point.y < 0 - item.height * 2 || point.y > self.stage.stageHeight + item.height * 2) {
            Log(item[‘floor‘], ‘需要隐藏‘, point.x, point.y)
            res = false;
        } else {
            Log(item[‘floor‘], ‘需要显示‘, point.x, point.y)
            res = true;
        }
        item[‘showhide‘](res);
    })
}, this);

我的项目中 测试预留前后2子组件高度即可在滚动过程中 没有卡顿

Egret 组件顺序排列时的 drawCall 优化思路

标签:class   eui   oba   hang   nbsp   OLE   children   过程   false   

原文地址:https://www.cnblogs.com/webfs/p/12697018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!