creator 动态创建两个帧数一样的序列帧首次创建时没有保持帧同步,关闭在打开后就可以了为什么
时间: 2024-03-03 16:49:33 浏览: 128
在 Cocos Creator 中动态创建两个帧数一样的序列帧时,可能会出现首次创建时没有保持帧同步的情况。这是因为在首次创建时,动画组件还没有初始化完全,可能会出现一些异步加载的延迟,导致两个序列帧播放不同步。而关闭再打开节点时,由于之前已经初始化过动画组件,所以再次播放时就不会出现同步问题了。
为了解决这个问题,我们可以在动画组件初始化完毕后再开始播放动画。可以在动画组件的 onEnable 回调函数中调用 play 方法。onEnable 回调函数会在节点被激活后调用,此时动画组件已经初始化完毕,可以保证两个序列帧播放同步。以下是示例代码:
```
var MyComponent = cc.Class({
extends: cc.Component,
properties: {
frames1: {
default: [],
type: cc.SpriteFrame
},
frames2: {
default: [],
type: cc.SpriteFrame
}
},
onLoad: function () {
// 创建动画资源
var animation = new cc.Animation();
animation.addSpriteFrames(this.frames1);
animation.addSpriteFrames(this.frames2);
// 创建动画组件,并将动画资源添加到动画组件中
var animComponent = this.node.addComponent(cc.Animation);
animComponent.addClip(animation);
},
onEnable: function () {
// 在动画组件初始化完毕后开始播放动画
var animComponent = this.node.getComponent(cc.Animation);
animComponent.play();
}
});
```
在上述示例代码中,我们在 onLoad 回调函数中创建动画资源和动画组件,并将动画资源添加到动画组件中。然后,在 onEnable 回调函数中调用 play 方法,开始播放动画。由于 onEnable 回调函数会在节点被激活后调用,所以可以保证动画组件已经初始化完毕,可以保证两个序列帧播放同步。
阅读全文