节点切换parent

不知道为什么在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,所有就会有节点切换不完全的情况

影响数组的操作 从大到小遍历 这是个好习惯