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 你定义的是 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 本来就没这个属性
你可以在循环里多打印一些值显示出来,比如数组的总长度,节点的类型