【已解决】骨骼动画导入代码如何实现顺序执行

cocostudio做的骨骼动画导入代码后直接runAction可以用。
但是我想实现按顺序执行完骨骼动画以后再执行一个方法代码。
使用Sequence来组合顺序执行,可是执行代码后看不到骨骼动画,只能看到之后执行的那个方法代码。
代码如下:

cocostudio::timeline::SkeletonNode* skeleton= static_castcocostudio::timeline::SkeletonNode*(CSLoader::createNode(“xxxx .csb”));

this->addChild(skeleton);
cocostudio::timeline::ActionTimeline* action = CSLoader::createTimeline(“xxxx .csb”);

action->play(action_name, loop);

skeleton->runAction(action);
以上是可以直接执行的。
以下是加上Sequence方法后就执行不出来了。
cocostudio::timeline::SkeletonNode* skeleton=猀琀愀琀椀挀开挀愀猀琀cocostudio::timeline::SkeletonNode*(CSLoader::createNode(“xxxx .csb”));

this->addChild(skeleton);
cocostudio::timeline::ActionTimeline* action =CSLoader::createTimeline(“xxxx .csb”);

action->play(action_name, loop);
CallFunc* callfunc = CallFunc::create(CC_CALLBACK_0(Hero::stopHurtHero, this));

Sequence* sequence = Sequence::create(action,callfunc, nullptr);

skeleton->runAction(sequence);

我使用Sequence方法也许不能执行骨骼动画,求版主和各位大神们教教使用什么方法能执行按顺序执行骨骼动画+代码。谢谢!!!

Sequence的不定参数create方法的声明:Sequence* Sequence::create(FiniteTimeAction *action1, …)
要求每个参数都是FiniteTimeAction,而ActionTimeline是Action直接派生出来的,所以你肯定运行不了它。
我在网上找到这一段话,你试一下:

setAnimation方法只能播放一种动画,所以当要连续播放不同的动画时,需要使用addAnimation方法来实现,它可以一条一条的播放不同的动画。
skeletonNode->addAnimation(0, “walk”, true);
skeletonNode->addAnimation(0, “attack”, false);

朋友,你这个文章真是帮了我的大忙了,我加载动画弄了一天了出不来,看了你的CSLoder::createNode这个方法后,这才成功……
多谢了啊……也不知道我上面的回答能不能帮上你忙,另外,上面那个文章中的代码“skeletonNode”这个变量是这样:
auto skeletonNode = new SkeletonAnimation(“enemy.json”, “enemy.atlas”);
这样来的,不知道新版能用不……

原文地址:
http://www.tairan.com/archives/7105/

我用的是新版本的方法

你这个方法只是动作的先后顺序,我需要的是一个动作完成以后执行一段方法代码,有办法没

用动画事件

好的谢谢 :14: