关于ActionTimeline的缓存问题

通过以下代码,可以将ActionTimeline从CSB文件中读取出来

 Node* node = CSLoader::createNode("res/unit/goblin/goblin_action.csb");
    auto moveNode = node->getChildByName("goblin_attackright");
    cocostudio::timeline::ActionTimeline* atl = dynamic_cast<cocostudio::timeline::ActionTimeline*>(moveNode->getActionByTag(moveNode->getTag()));

想请问一下,如何把它加入缓存?
不然的话,每次调用action都要去读取文件,非常麻烦。

类似于下面的方法,直接从缓存中读取action或者animation的话,不需要每次都读取文件。

auto cache = AnimationCache::getInstance();
cache->addAnimationsWithFile("animations/animations-2.plist");
auto animation2 = cache->getAnimation("dance_1");

感觉麻烦不了多少啊。
甚至比以前还方便,现在都不需要先add加载

你是怕性能问题吧?

我觉得性能差别不是很大。
当然如果这个节点经常用到,你可以把他和他的Action保存起来,用到的时候再取出

请教下,
存到一个Vector里后,第一次 在某个scene里gotoFrameAndPlay播放后,popscene该scene后,再次pushscene该scene,再播放该动画就怎么也动不了,只显示动画的某一帧的
无论我怎么resume或者pause然后再gotoFrameAndPlay,都无效 :8:

你的Action有给对应的的节点runAction吗?

有的,我是把node和愀挀琀椀漀渀都分别存在一个vector里了
而且通过action 来getTarget()也是和相关的node对应
后来还试过,把动画stop()掉然后再SetTarget(),也还是动不了

另外第一次都是能播放的,说明是对的,就是播放第二次动不了

重新加载的Action能播放么

如果是通过读取文件的action能播放的
node还是之前保存在vector里的
就是每次都要读取文件,感觉。。。。

我试了可以的。

不是这样的
我是一开始先用类似版主你这样的,然后分别存入Vector里(全局)

然后在我在后面pushscene()个场景里调用这个全局里的某个一个动画播放gotoFrameAndPlay(0,true);
然后播放完后popscene()掉改场景
然后再次pushscene 这个场景,就播放不了了
感谢,貌似描述挺麻烦的,还是算了吧,我还是用读取文件的方式吧,辛苦了

问下版主,我们游戏中会刷很多个相同的小怪,怪物都是用cocostudio制作的csb帧动画,有什么缓存的办法嘛?
怪物是相同的,但每次都要读取csb文件去创建一个节点,感觉挺耗效率的