想实现一个功能,让 sprite根据给予的一条路径(std::vectorcocos2d::Point path)移动,具体代码如下
Vector< FiniteTimeAction * > fta;
std::vector<cocos2d::Point> path
while (!path.empty()) {
...
auto des = path.back()
auto moveAction = MoveTo::create(des.distance(currenctPistion) / 34, des);
...
auto aniForever = RepeatForever::create(moveAnimation);
auto seq = Sequence::create(moveAction, CallFunc::create(CC_CALLBACK_0(Barbarian::stopAnimation, this, aniForever)), NULL);
auto spw = Spawn::create(aniForever, seq, NULL);
fta.pushBack(spw);
...
}
auto seq = Sequence::create(fta);
sprite->runAction(seq);
这样的话,当moveAction结束的时候,会调用stopAnimation将animation停止, stopAnimation代码如下
void CharacterBase::stopAnimation(cocos2d::RepeatForever *ani)
{
CCLOG("STOP ANIMATION");
this->sprite->stopAction(ani);
}
但结果是,移动是移动了,但是没有animation表现出来,不知道哪里出现了问题
