关于cc.tween 动画

目前这个api 我有点迷,比如我有一个数组,for循环每次添加一次 动画一次,但是他好像会等到我当前数组全部装完 在做动画… :sweat_smile:

能发代码截图吗?你这说的不是很清楚啊!


第二张图片就是每一次EventManageUtils.getInstance().emit 的方法

第二张图的方法就是没for一次才执行一次 所以按道理 动画应该是每次都会执行一次,但是目前是 group.addChild 全部节点add完才会做动画 很奇怪

for循环虽然是上一个执行完才执行下一个,但是基本上你可以认为是同步的,所以你近乎是同步发了这么多个事件,然后你的动画是有个延时的,所以你代码上肯定是先全部add完才执行的,我倒是没看懂你想干啥不知道要改啥,但是你执行出来的效果的确是先add完了才会走动画,跟tween没关系

那异步发事件可行吗

你add完成的时候,隐藏掉,等tween执行动画的时候,在显示。比如在delay前面加个call(()=>{node.opacity= 255}) 可以试试

好的感谢大佬,我试试

难受.还是一组一组的 :joy:

tween之前设置节点不可见或者透明度为0,在delay后加一个call设置节点可见或者不透明


你看我框起来的这两行,你想想当I相同的时候是不是这组的延迟时间是一致的,所以你动画肯定是一组一组的播啊

额 可能得换一种写法了 - -

那直接不用事件看看了 直接在for循环里面就做这个事情了

有两种方案,
1、自己根据循环去计算delay,比如每次动画执行3S

for(let i = 0; i < size; i++) {
    cc.tween(node)
        .delay(3 * i)
        //...执行动画
        .start();
}

2、使用async/await

for(let i = 0; i < size; i++) {
    await new Promise(resolve => {
        cc.tween(node)
            //...执行动画
            .call(resolve)
            .start();
    })
}