C++ 在cocos2d-x中切换精灵动画

C++ 在cocos2d-x中切换精灵动画,c++,animation,sprite,cocos2d-x,C++,Animation,Sprite,Cocos2d X,我有一个“GameCharacter”类,其中我有一个精灵作为我在游戏中的主要角色,我正确地加载了帧和动画。我可以通过单触或滑动手势在动画之间切换。现在我可以在动画之间旋转 在我的场景的触摸功能中,我有: _mychar->RunAnimation(id); 其中id是动画的id,只是一个随着每次触摸而改变的整数 该方法的工作原理如下: void GameCharacter::RunAnimation(int a){ _sprite->stopAllActions();

我有一个“GameCharacter”类,其中我有一个精灵作为我在游戏中的主要角色,我正确地加载了帧和动画。我可以通过单触或滑动手势在动画之间切换。现在我可以在动画之间旋转

在我的场景的触摸功能中,我有:

_mychar->RunAnimation(id);
其中id是动画的id,只是一个随着每次触摸而改变的整数

该方法的工作原理如下:

void GameCharacter::RunAnimation(int a){

    _sprite->stopAllActions();
    if(a<_animation.size() && a>=0){
        _sprite->runAction( CCRepeatForever::create(_animation[a]));
    }
}
void GameCharacter::RunAnimation(int a){
_精灵->停止动作();
如果(a=0){
_精灵->运行动作(CCRepeatForever::create(_animation[a]);
}
}
\u animation[]
只是一个保留了
canimate*
对象的向量(我稍后销毁游戏角色时会释放它们)

我有两个空闲动画,我想在它们之间随机切换,例如,我想“排队”第一个动画3到5次,第二个1到2次,并像这样永远重复。。。另外,我想用一个触摸来中断这个“无限随机空闲动画”,使角色运行另一个动画,直到它结束(例如跳跃动画),当它结束时,只进入空闲动画。我不知道我是否解释得很好,我希望你能理解我

动画的id为:

  • 0-idle1(3帧)
  • 1-idle2(6帧)
  • 2跳(12帧)
  • 3-walk(12帧)
现在,我只需要能够让角色处于空闲状态(动画0和1之间的随机时间),每当触摸时,跳转动画完成一次,并在空闲结束时再次启动

稍后我将解决行走动画


提前谢谢

我建议使用
schedule
方法定期运行
idle
逻辑,如下所示-

this->schedule(schedule_selector(YourGameClass::idleLogic), FREQUENCY_IN_SECONDS);
idleLogic
方法中,您可以检查角色是否正在跑步或跳跃,如果是,则为空闲动画数组获取一个随机的
索引,然后运行
\u animation[index]
。跟踪角色停止的时间也是一个好主意,这样就不会运行任何空闲动画,除非
iddleTime>=MIN\u idle\u time


希望能有所帮助。

太好了,感谢您的快速响应,我将检查日程安排方法,看看它是如何工作的:)2小时检查日程安排方法,我一点也不明白。。。你能举个例子吗?嗯,到底是什么问题?您是否设法调用schedule,以便定期调用选择器?在我使用objective-c Cocos2d时,恐怕无法为您显示相关代码:(