1.6.1 设置active的问题

for (var i = 0; i < this.nodeLayout.children.length; i++) {
this.nodeLayout.children[i].active = false;
}
现在这样设置active属性无效了吗?但是昨天都没问题啊。
还有button设置active为false也报错
Cannot set property ‘active’ of undefined
这是为什么 之前没有这个情况出现

换了1.6.2 也是这样

Cannot set property ‘active’ of undefined
不是说 你要设置active这个属性的节点是undefined么 你检查下有没有取到这个节点咯

这个节点是有的,而且是今天之前都没有这个问题。不只是这一个button节点,所有的都是


设置label没问题,但是设置cocos图片就报错了
还是说我这种写法本身就有问题

label 你定义的是 cc.Label 这个是一个组件
cocos 你定义是 cc.Node 这个已经是节点了

    this.cocos.node.active = false;

这里不需要再.node来拿到组件上面的节点

懂了,可是设置button的active属性还是不行。

还有这个问题,之前这样写是有效果的,但是现在没作用了

这个没有大佬来解释一下吗,button设置不了active。还是只有我碰到这种情况了

不可能设置无效啊

第一个你先看是否对象是 node
第二个是不是其他地方的代码设置了

最好自己调试一下,很快的 Chrome,打开控制台,打个断点

错了,this.nodeLayout.children这个是.nodeLayout节点下的所有孩子节点,这样遍历不好,因为某些操作会引起下标变化

就比如你在这个遍历里,删除了一个节点,那整个children数组就会变化,之前的下标顺序也会变,这个数组是动态的

还有active是node的属性,其他东西没有这个属性

只是用来做显示和隐藏没有做删除动作,而且我疑惑的在于之前是可以的。但是在我没修改任何代码的时候运行在chrome上面报错了

active=false,layout组件里可能就不包括这个节点了

你这个属于隐患,之前没报错不代表没错

button 本来就没这个属性

你可以在循环里多打印一些值显示出来,比如数组的总长度,节点的类型



可是这里确实是隐藏了呀。。