加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos 学习笔记(三)动作

发布时间:2020-12-14 17:19:58 所属栏目:百科 来源:网络整理
导读:前两节根据一般游戏能想到的,分别学习了两大交互:触摸、菜单。已经能实现许多功能,但是此时做出来的东西却感觉有些……死气沉沉?这是因为少了动画效果。 动画在游戏中十分重要,如果不能动,就基本变成文字游戏了。因此这次学习了《权威》的第四章:动作

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读