cocos 学习笔记(三)动作

前端之家收集整理的这篇文章主要介绍了cocos 学习笔记(三)动作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前两节根据一般游戏能想到的,分别学习了两大交互:触摸、菜单。已经能实现许多功能,但是此时做出来的东西却感觉有些……死气沉沉?这是因为少了动画效果
动画在游戏中十分重要,如果不能动,就基本变成文字游戏了。因此这次学习了《权威》的第四章:动作特效与动画。
依然接着上一节的例子来学习,上次做了一个能收放自如且随处乱摆的菜单(虽然有些丑…),每次只要点击MENU就可以弹出来。但是弹出的太突兀了,因此可以将其弹出做成一个动画。

书中说到,动作类(CCAction)是依托于结点类(CCNode)及其子类存在的,也就是说,以动作类创建一个对象之后,要将其作用于一个结点对象才能动起来。
CCAction有三个子类:CCFiniteTimeAction、CCFollow、CCSpeed。这里要用到的是CCFiniteTimeAction的子类CCActionInterval,延时动作类。
延时动作类就是作用之后需要执行一段时间的,作为这个实例中的弹出动画很合适。

延时动作有如下种类:
移动、缩放、扭曲、旋转、跳跃、贝赛尔曲线、淡入淡出、闪烁、色值渐变。
取其中移动、缩放、旋转和跳跃功能实现如下:

CCActionInterval* actionto = CCMoveTo::create(1,ccp(200,200));
        CCActionInterval* actionsc = CCScaleTo::create(1,0.5);
        CCActionInterval* actionrt = CCRotateBy::create(1,360);
        CCActionInterval* actionjp = CCJumpBy::create(1,200),30,5);
        //CCActionInterval* actionto_back = actionto->reverse();

        hero->runAction(actionto);
        hero->runAction(actionsc);
        hero->runAction(actionrt);
        hero->runAction(actionjp);
        hero->runAction(CCSequence::create(actionto,NULL));

遇到的问题:在测试中,如果在弹出的过程里点击MENU消除它则会发生错误,原因是动作还在执行,而结点已经被释放了,解决办法是,在释放时参数选为true(默认):this->removeChild(hero,true); 未解决的问题:书中说reverse函数实现可将动作倒置,但是我使用后,却抛出了错误

猜你在找的Cocos2d-x相关文章