cocos 学习笔记(三)动作

本文介绍了游戏开发中动画特效的重要性,并通过《权威》书籍第四章的学习,详细讲述了如何使用动作类(CCAction)及其实现类如CCFiniteTimeAction来为游戏元素添加移动、缩放、旋转等动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值