runAction 问题

  • Creator 版本:3.2.2

  • 目标平台: web & android

  • 出现概率:30%

  • 额外线索:

for (let i = 0; i < length; i++) {
    let node = self.createSprite();
    let move = cc.moveTo(0.3, cc.v2(target_x, 0));
    let scaleTo = cc.scaleTo(0.3, 1);
    let ccCall = cc.callFunc(function () {
        console.log('>>>>>>>>>>>do action');

    }, this)
    let spawn = cc.spawn(move.clone(), scaleTo.clone());
    //for循环中执行runaction,有几率出现不执行的情况,todo
    node.runAction(cc.sequence(cc.delayTime(i * 0.1), spawn.clone(), ccCall));
}

for循环中执行runaction,有几率出现action不执行的情况,回调也没有执行,各位大佬能看出问题吗

可以试试cc.tween

没在for循环里用过,感觉像是上一次动作没执行完,又执行下一次动作,错乱了

cc.tween试过了,不行

action是new出来的,node也是new出来的,所以不是这个问题

用同一个节点测试了下 没有发现你这个问题

这个也是有几率的,我也很纳闷,偶现

一:既然在循环体内new的Action,那就没必要每次用的时候都clone吧,反正你只用一次;
二:delay的时候用的 i 建议先用变量保存,这里的 i 是引用,runAction不会阻塞,你这个Action还没执行,下一个Action又run了,我估计你这个不是没有执行,而是同时执行了。

clone开始是没加的,为了试验才加上去的,如果同时执行的话会执行回调吧,也没执行回调,你说的i的问题,我也感觉不是这个,我先写死值试试,还是很感谢你的解答

clone开始是没加的,为了试验才加上去的,如果同时执行的话会执行回调吧,也没执行回调,你说的i的问题,我也感觉不是这个,我先写死值试试,还是很感谢你的解答

没人了啊,难过