|
|
@@ -134,14 +134,27 @@ export default class TableView extends cc.Component {
|
|
|
const old_count = this.itemArr.length;
|
|
|
for (let i = 0; i < old_count; i++) {
|
|
|
if (this.itemData[i]) {
|
|
|
- if (!this.itemArr[i]) {
|
|
|
- let y = 0;
|
|
|
- if (i > 0) {
|
|
|
- y = this.itemArr[i - 1].y - this.itemArr[i - 1].height - this.itemInterval;// 下一条目纵坐标
|
|
|
+ if (this.direction == Direction.vertical) {
|
|
|
+ if (!this.itemArr[i]) {
|
|
|
+ let y = 0;
|
|
|
+ if (i > 0) {
|
|
|
+ y = this.itemArr[i - 1].y - this.itemArr[i - 1].height - this.itemInterval;// 下一条目纵坐标
|
|
|
+ }
|
|
|
+ let item_node = this.addItemNode(i, y);
|
|
|
+ this.updateContentHeigh(this.itemArr[i].height - item_node.y);
|
|
|
}
|
|
|
- let item_node = this.addItemNode(i, y);
|
|
|
- this.updateContentHeigh(this.itemArr[i].height - item_node.y);
|
|
|
}
|
|
|
+ else {
|
|
|
+ if (!this.itemArr[i]) {
|
|
|
+ let x = 0;
|
|
|
+ if (i > 0) {
|
|
|
+ x = this.itemArr[i - 1].x + this.itemArr[i - 1].width + this.itemInterval;// 下一条目纵坐标
|
|
|
+ }
|
|
|
+ let item_node = this.addItemNode(i, x);
|
|
|
+ this.updateContentHeigh(this.itemArr[i].width + item_node.x);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
let comp_script = this.itemArr[i].getComponent(this.scr_item[this.itemData[i].pfbType || 0]);
|
|
|
comp_script && comp_script.setItemData(this.itemData[i], this);
|
|
|
} else {
|
|
|
@@ -175,7 +188,6 @@ export default class TableView extends cc.Component {
|
|
|
if (this.direction == Direction.vertical) {
|
|
|
for (let i = index; i < item_data_count; i++) {
|
|
|
let obj: any = {}
|
|
|
- let y;
|
|
|
if (i === 0) {
|
|
|
obj.startPos = 0;
|
|
|
} else {
|
|
|
@@ -189,7 +201,6 @@ export default class TableView extends cc.Component {
|
|
|
else {
|
|
|
for (let i = index; i < item_data_count; i++) {
|
|
|
let obj: any = {}
|
|
|
- let y;
|
|
|
if (i === 0) {
|
|
|
obj.startPos = 0;
|
|
|
} else {
|
|
|
@@ -202,7 +213,12 @@ export default class TableView extends cc.Component {
|
|
|
}
|
|
|
|
|
|
if (item_data_count > 0) {
|
|
|
- this.updateContentHeigh(this.itemPosMap.get(item_data_count - 1).endPos);
|
|
|
+ if (this.direction == Direction.vertical) {
|
|
|
+ this.updateContentHeigh(this.itemPosMap.get(item_data_count - 1).endPos);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this.updateContentWidth(this.itemPosMap.get(item_data_count - 1).endPos);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -352,7 +368,7 @@ export default class TableView extends cc.Component {
|
|
|
if (this.content.width > this.layerWith) {
|
|
|
let firstItemPos = this.scrollView.getScrollOffset().x;
|
|
|
let lastItemPos = firstItemPos + this.layerWith;
|
|
|
- if (firstItemPos < 0) return;
|
|
|
+ if (firstItemPos > 0) return;
|
|
|
if (this.initItemData) {
|
|
|
// cc.log('111:%o', this.itemPosMap)
|
|
|
this.initItemData = false;
|
|
|
@@ -364,13 +380,13 @@ export default class TableView extends cc.Component {
|
|
|
|
|
|
//超出边界直接返回.
|
|
|
//滚动条向上滑动可能会触发的函数
|
|
|
- if (firstItemPos > this.firstItemData.endPos) {
|
|
|
+ if (firstItemPos < this.firstItemData.endPos) {
|
|
|
if (this.lastItemIndex + 1 < this.itemData.length) {
|
|
|
this.updateFirstItemIndex();
|
|
|
}
|
|
|
this.count++;
|
|
|
}
|
|
|
- if (lastItemPos > this.lastItemData.endPos) {
|
|
|
+ if (lastItemPos < this.lastItemData.endPos) {
|
|
|
if (this.lastItemIndex + 1 < this.itemData.length) {
|
|
|
this.itemCanMoveDown = true;
|
|
|
this.updateLastItemIndex();
|
|
|
@@ -378,11 +394,11 @@ export default class TableView extends cc.Component {
|
|
|
}
|
|
|
}
|
|
|
//滚动条向下滑动可能会触发的函数
|
|
|
- if (lastItemPos < this.lastItemData.startPos) {
|
|
|
+ if (lastItemPos > this.lastItemData.startPos) {
|
|
|
this.updateLastItemIndex();
|
|
|
this.count--;
|
|
|
}
|
|
|
- if (firstItemPos < this.firstItemData.startPos) {
|
|
|
+ if (firstItemPos > this.firstItemData.startPos) {
|
|
|
this.itemCanMoveUp = true;
|
|
|
this.updateFirstItemIndex();
|
|
|
this.itemCanMoveUp = false;
|
|
|
@@ -415,26 +431,49 @@ export default class TableView extends cc.Component {
|
|
|
* @returns
|
|
|
*/
|
|
|
private getItemIndex() {
|
|
|
- let firstItemPos = this.scrollView.getScrollOffset().y;
|
|
|
- let lastItemPos = firstItemPos + this.layerHeight;
|
|
|
let arr = [];
|
|
|
- this.itemPosMap.forEach((value, key) => {
|
|
|
- let status1 = value.startPos <= firstItemPos && value.endPos > firstItemPos;
|
|
|
- let status2 = value.startPos >= firstItemPos && value.endPos < lastItemPos;
|
|
|
- let status3 = value.startPos <= lastItemPos && value.endPos > lastItemPos;
|
|
|
- if (status1) {
|
|
|
- this.firstItemData.startPos = value.startPos;
|
|
|
- this.firstItemData.endPos = value.endPos;
|
|
|
- this.firstItemIndex = key;
|
|
|
- arr.push(key);
|
|
|
- }
|
|
|
- if (status3) {
|
|
|
- this.lastItemData.startPos = value.startPos;
|
|
|
- this.lastItemData.endPos = value.endPos;
|
|
|
- this.lastItemIndex = key;
|
|
|
- arr.push(key);
|
|
|
- }
|
|
|
- })
|
|
|
+ if (this.direction == Direction.vertical) {
|
|
|
+ let firstItemPos = this.scrollView.getScrollOffset().y;
|
|
|
+ let lastItemPos = firstItemPos + this.layerHeight;
|
|
|
+ this.itemPosMap.forEach((value, key) => {
|
|
|
+ let status1 = value.startPos <= firstItemPos && value.endPos > firstItemPos;
|
|
|
+ let status2 = value.startPos >= firstItemPos && value.endPos < lastItemPos;
|
|
|
+ let status3 = value.startPos <= lastItemPos && value.endPos > lastItemPos;
|
|
|
+ if (status1) {
|
|
|
+ this.firstItemData.startPos = value.startPos;
|
|
|
+ this.firstItemData.endPos = value.endPos;
|
|
|
+ this.firstItemIndex = key;
|
|
|
+ arr.push(key);
|
|
|
+ }
|
|
|
+ if (status3) {
|
|
|
+ this.lastItemData.startPos = value.startPos;
|
|
|
+ this.lastItemData.endPos = value.endPos;
|
|
|
+ this.lastItemIndex = key;
|
|
|
+ arr.push(key);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ let firstItemPos = this.scrollView.getScrollOffset().x;
|
|
|
+ let lastItemPos = firstItemPos + this.layerWith;
|
|
|
+ this.itemPosMap.forEach((value, key) => {
|
|
|
+ let status1 = value.startPos <= firstItemPos && value.endPos > firstItemPos;
|
|
|
+ let status2 = value.startPos >= firstItemPos && value.endPos < lastItemPos;
|
|
|
+ let status3 = value.startPos <= lastItemPos && value.endPos > lastItemPos;
|
|
|
+ if (status1) {
|
|
|
+ this.firstItemData.startPos = value.startPos;
|
|
|
+ this.firstItemData.endPos = value.endPos;
|
|
|
+ this.firstItemIndex = key;
|
|
|
+ arr.push(key);
|
|
|
+ }
|
|
|
+ if (status3) {
|
|
|
+ this.lastItemData.startPos = value.startPos;
|
|
|
+ this.lastItemData.endPos = value.endPos;
|
|
|
+ this.lastItemIndex = key;
|
|
|
+ arr.push(key);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
return arr;
|
|
|
}
|
|
|
|
|
|
@@ -448,7 +487,12 @@ export default class TableView extends cc.Component {
|
|
|
return;
|
|
|
}
|
|
|
if (!this.hasItem(num)) {
|
|
|
- this.itemMove(num, -this.itemPosMap.get(num).startPos);
|
|
|
+ if (this.direction == Direction.vertical) {
|
|
|
+ this.itemMove(num, -this.itemPosMap.get(num).startPos);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this.itemMove(num, this.itemPosMap.get(num).startPos);
|
|
|
+ }
|
|
|
}
|
|
|
num++;
|
|
|
return this.itemMoveUp(num);
|
|
|
@@ -460,7 +504,12 @@ export default class TableView extends cc.Component {
|
|
|
return;
|
|
|
}
|
|
|
if (!this.hasItem(num)) {
|
|
|
- this.itemMove(num, -this.itemPosMap.get(num).startPos);
|
|
|
+ if (this.direction == Direction.vertical) {
|
|
|
+ this.itemMove(num, -this.itemPosMap.get(num).startPos);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this.itemMove(num, this.itemPosMap.get(num).startPos);
|
|
|
+ }
|
|
|
}
|
|
|
num--;
|
|
|
return this.itemMoveDown(num);
|
|
|
@@ -487,7 +536,7 @@ export default class TableView extends cc.Component {
|
|
|
* @param y
|
|
|
* @returns
|
|
|
*/
|
|
|
- private itemMove(index: number, y: number) {
|
|
|
+ private itemMove(index: number, xOrY: number) {
|
|
|
for (let i = 0; i < this.itemArr.length; i++) {
|
|
|
//index存在-1的情况,类似于在缓存池里的item.
|
|
|
let status1 = this.itemArr[i].index < this.firstItemIndex - 1 ? true : false;
|
|
|
@@ -498,13 +547,18 @@ export default class TableView extends cc.Component {
|
|
|
//cc.log(i, index, this.itemArr, this.content.height);
|
|
|
//给item赋值还有设置位置
|
|
|
this.itemArr[i].index = index;
|
|
|
- this.itemArr[i].y = y;
|
|
|
+ if (this.direction == Direction.vertical) {
|
|
|
+ this.itemArr[i].y = xOrY;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this.itemArr[i].x = xOrY;
|
|
|
+ }
|
|
|
let comp_script = this.itemArr[i].getComponent(this.scr_item[this.itemArr[i].pfbType]);
|
|
|
comp_script && comp_script.setItemData(this.itemData[index], this);
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
- this.addItemNode(index, y);
|
|
|
+ this.addItemNode(index, xOrY);
|
|
|
}
|
|
|
|
|
|
/**
|