各位大大好,最近卡在范例的ListView的核心逻辑里面,研究了几天实在看不明白,希望有大大可以解答一下。是范例02_ui_05_ScrollView_ListView,这部分代码是ListViewCtrl.js中的Update函数的一个for循环,代码如下:
for (let i = 0; i < items.length; ++i) {
let viewPos = this.getPositionInView(items[i]);
if (isDown) {
// if away from buffer zone and not reaching top of content
if (viewPos.y < -buffer && items[i].y + offset < 0) {
items[i].setPositionY(items[i].y + offset);
let item = items[i].getComponent(‘Item’);
let itemId = item.itemID - items.length; // update item id
item.updateItem(i, itemId);
}
} else {
// if away from buffer zone and not reaching bottom of content
if (viewPos.y > buffer && items[i].y - offset > -this.content.height) {
items[i].setPositionY(items[i].y - offset);
let item = items[i].getComponent(‘Item’);
let itemId = item.itemID + items.length;
item.updateItem(i, itemId);
}
}
}
求解释这部分代码实现了什么功能,有什么作用
我也有同样的问题。
在范例里面一个是这个listview看不太懂,还有一个就是platform碰撞中star的脚本。
我也是遇到了这样一个问题 其中 item.itemID itemID 这个属性在api里面没有找到相应的属性介绍 updateItem(i, itemId);这个方法在api里面也没有找到这个方法 实在看不明白其中的核心逻辑 求助大牛
这个是自定义类中的属性和方法,样例里面有个Item.js脚本,都是在那里面定义的
这个listView采用了重复使用item的方式。在一开始加载的时候,就初始化了一个指定长度的item数组,然后在上下移动时,把移动到可视范围外的item,通过修改其坐标和显示内容达到重复利用的目的,这样可以减少节点的生成,节约内存消耗
1赞
老哥搞懂了不,那个buffer那个设定我有点晕