Cocos Studio帧动画和播放

Cocos Studio  v3.10

Cocos Studio帧动画和播放_第1张图片

Cocos Studio帧动画和播放_第2张图片

实现代码:

//倒计时
void LoginScene::daoJiShi()
{
	auto animNode = CSLoader::createNode("public/WaitDialog.csb");
	this->csb->addChild(animNode);
	auto antAction = CSLoader::createTimeline("public/WaitDialog.csb");
	animNode->runAction(antAction);
	antAction->gotoFrameAndPlay(0, 40, true);


	Node* node = CSLoader::createNode("logon/Node_Act.csb");
	auto action = CSLoader::createTimeline("logon/Node_Act.csb");
	node->runAction(action);
	addChild(node);
	action->gotoFrameAndPlay(0, 20, false);
}

实现效果:

Cocos Studio帧动画和播放_第3张图片

Cocos Studio帧动画和播放_第4张图片

Cocos Studio帧动画和播放_第5张图片

 

Cocos Studio编辑器编辑的动画,均是通过CCActionTimeline来执行。CCActionTimeline主要包含如下函数:

//播放一个动画
 virtual void play(std::string animationName, bool loop);
 //从某一帧开始播放,参数:开始帧数,结束帧数,是否循环
 virtual void gotoFrameAndPlay(int startIndex);
 virtual void gotoFrameAndPlay(int startIndex, bool loop);
  virtual void gotoFrameAndPlay(int startIndex, int endIndex, bool loop);
   virtual void gotoFrameAndPlay(int startIndex, int endIndex, int currentFrameIndex, bool loop);
//开始帧
virtual int getStartFrame() const { return _startFrame; }
//结束帧
virtual int  getEndFrame() const { return _endFrame; }
//暂停在某一帧
virtual void gotoFrameAndPause(int startIndex);
//设置动画播放的速度
virtual void  setTimeSpeed(float speed) { _timeSpeed = speed; }
//设置回调函数
void setFrameEventCallFunc(std::function listener);

如何知道一个UI动画的时长呢?可以添加一个函数来计算

float ActionTimeline::getAnimationTime(const char* animationName) const
{
    const auto it = _animationInfos.find(animationName);
    if (it == _animationInfos.end())
    {
        return 0;
    }

    const AnimationInfo& index = it->second;
    int endIndex = index.endIndex;
    return (endIndex - index.startIndex) * _frameInternal;
}

 

你可能感兴趣的:(Cocos2d-x,C++)