不知道为什么在for循环里面切换parent会出问题,代码如下:
for(var i = 0 ; i < this.nodeArr.length;++i) {
var node = this.nodeArr[i];
console.log(node.name + " " + i);
node.setParent(this.T1);
}
console.log(this.node);
运行结果却不是希望的那样
不知道为什么在for循环里面切换parent会出问题,代码如下:
for(var i = 0 ; i < this.nodeArr.length;++i) {
var node = this.nodeArr[i];
console.log(node.name + " " + i);
node.setParent(this.T1);
}
console.log(this.node);
运行结果却不是希望的那样

用let
这个解决了,与let,var没什么关系。下面是原来项目的代码
moveAreaBets(sIndex,tIndex) {
console.log("sindex = " + sIndex);
if (sIndex < -1 || tIndex < -1 || sIndex > this.Areas.childrenCount || tIndex > this.Areas.childrenCount)
{
console.log("invalid index " + sIndex + " " + tIndex);
return ;
}
var snode = this.Areas.children[sIndex];
var newParentNode = this.Areas.children[tIndex];
var childrenCount = snode.childrenCount
for (let j = 0; j < childrenCount; ++j)
{
var bet = snode.children[j];
this.moveOneBet(bet,newParentNode);
}
},
//移动操作
//sNode 要移动的节点
//tNode 目标父节点
moveOneBet(sNode,tNode){
if (sNode == null || tNode == null)
{
console.log("invalid node ");
return ;
}
var spos = cc.v2(sNode.x,sNode.y);
sNode.setParent(tNode);
sNode.setPosition(spos);
},
其中把for循环里面的j换成0就可以了,好像是child调用一次减少1,所有就会有节点切换不完全的情况
影响数组的操作 从大到小遍历 这是个好习惯