nodeA动作执行的打印信息有4条
nodeB的打印信息只有1条
求解惑
更正下 红框内容改成nodeA.parent.active = false; 才会只执行一次
就是把for循环拆开来 依次写4次动作执行 还是只会调用一次
那个node.stopAllActions(),,是假的吗。。
nodeA每次循环的时候都是不同的节点 所以互不干涉
你这个变量取得有点hmmmm,我全按你实际的nodeName说了哈。
nodeA的node0节点执行回调的时候把nodeA的active设置成了false,那么node[0-3]都会被禁用,那action就应该不继续执行了吧。
额 意思就是 节点的动作只有在onEnable生命周期才会被执行么
但是 4个nodeA的moveTo动作都执行了 就最后nodeB显示的回调 只会有一个nodeB被显示出来 打印信息也只有一条
for (let i = 0; i < 4; ++i) {
const nodeA = this.node.getChildByName(“nodeA”).getChildByName(“node” + i);
const nodeB = this.node.getChildByName(“nodeB”).getChildByName(“node” + i);
if (nodeA != undefined && nodeB != undefined) {
const worldPos = this.node.getChildByName(“nodeA”).convertToWorldSpaceAR(nodeA.position);
const pos = this.node.getChildByName(“nodeB”).convertToNodeSpaceAR(worldPos);
nodeA.stopAllActions();
console.log(“nodeA执行动作”);
nodeA.runAction(cc.sequence(cc.moveTo(0.4, pos), cc.callFunc(function () {
nodeA.parent.active = false;
console.log(“nodeB回调显示”);
nodeB.active = true;
}.bind(this))));
}
}
也不是。
是当你的节点被禁用的时候,当前节点和所有子节点的action就没作用了,这个讲道理很正常。
你开始4个一起运行是没错的,你是在0.4s之后才false的。
最简单的实验,update输出4个节点的位置,然后你这四个节点分别延时0.1,0.2,0.3,0.4,你看看位置信息。
多谢 了解了