egret中Glist的scrollToView方法的疑问.

对应设置了横向流动或者竖向流动的虚拟列表;以横向流动举例。
该list是横向流动并且设置列数是3,视口内最多显示2行数据,现在数据长度是15.那么列表就是5行3列。
当得到数据index是1或者2的时候设置滚动 scrollToView(index) 时无法滚动视觉区域内(实际是保持posY是0就可以了),但是实际posY会被滚动到第二行,查看源码看到。
for (i = 0; i < index; i += this._curLineItemCount)
pos += this._virtualItems[i].height + this._lineGap;
rect = new egret.Rectangle(0, pos, this._itemSize.x, ii.height);
这样是不是有问题呢?因为 i 初始值为0;当index大于0的时候始终执行循环,实际3列的数据当index小于3时是不是不需要执行循环的,因为0 1 2都是在第一行 pos也就是保持为0就可以了.另外计算pos的循环是不是可以简化成以下这样呢?:
let row:number=Math.floor(index/this._curLineItemCount)
pos = row*(this._virtualItems[i].height + this._lineGap)
rect = new egret.Rectangle(0, pos, this._itemSize.x, ii.height);

123.png


456.png

 
已邀请:

谷主

赞同来自:

这个问题早已经改过。你的版本是旧的。

要回复问题请先登录注册