CocoStudio 简单使用动画

版本:

cocos2dx 3.9

cocostudio 3.9

首先抱怨一下cocos2dx官方对cocostudio的不更新,不过现在cocostudio也够用了,不过还是要腹黑一下。。。。

今天接触到了cocostudio的动画部分,所以就做个简单的总结

载进行动画编辑时,很多都用到了 “开始记录动画”这个勾选选项

CocoStudio 简单使用动画_第1张图片

这个选项是很重要的,不开启的话比如 帧事件,不透明度都是没法使用的,这个坑我真的认了!!!

动画还是和以前的一样。没差

然后就是cpp的编写了

bool SplashScene::init()
{
	//导入场景文件
	Node*csb = CSLoader::createNode("SplashScene.csb");
	this->addChild(csb);
	//这个类是Action动作类的子类
	timeline::ActionTimeline*action = CSLoader::createTimeline("SplashScene.csb");
	csb->runAction(action);
	//从第0帧开始,并且只播放一次
	action->gotoFrameAndPlay(0,false);
	//获取动画持续时间
	float duration = action->getDuration();
	//获取结束帧,经测试是你动画添加帧的最后位置
	float lastFrame = action->getEndFrame();
	//捕获事件帧
	action->setFrameEventCallFunc(CC_CALLBACK_1(SplashScene::onFrameEvent,this));
	//捕获到最后一帧的回调事件,比如你总共是60帧的动画,那么60就是最后帧,每次循环到60都会触发一次
	action->setLastFrameCallFunc(CC_CALLBACK_0(SplashScene::gameStart,this));
	return true;
}
void SplashScene::onFrameEvent(cocostudio::timeline::Frame* frame)
{
	timeline::EventFrame*env = dynamic_cast(frame);
	if(!env)
		return ;
	auto str = env->getEvent();
	//这个是你在cocostudio里帧事件的名称
	if(str == "game_start")
		log("game_start");
}
void SplashScene::gameStart()
{
	log("game start");
}


在我调试的时候出现了一个错误,就是在csb文件改变下,而源程序没有重新编译,程序能正常运行,但调用显示不正确(vs2012),不知道这什么情况

发一张我最终的效果图吧

CocoStudio 简单使用动画_第2张图片

你可能感兴趣的:(随笔)