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

[cocos2d-x] --- CCAction类详解

发布时间:2020-12-14 19:02:14 所属栏目:百科 来源:网络整理
导读:1 在一个游戏中有了人物、白云等精灵,但是游戏中精灵静止不动肯定是不行的,要让它们执行一些动作,使精灵有丰富的动画效果,这样就会使用到 CCAction 类。 CCAction 主要用于人物角色等发生动作时使用,如紧身肉搏、远程射击和贴近对话等 2 在 cocos2d-x

1在一个游戏中有了人物、白云等精灵,但是游戏中精灵静止不动肯定是不行的,要让它们执行一些动作,使精灵有丰富的动画效果,这样就会使用到CCAction类。CCAction主要用于人物角色等发生动作时使用,如紧身肉搏、远程射击和贴近对话等

2cocos2d-x中,CCAction的类结构图如下

3从上面的类结构图可以看出,动作的基类是CCAction,通过继承它可以实现很多不同的动作,主要分为三大类:CCFiniteTimeAction(有限次动作执行类)CCSpeed(节点执行速度类)CCFollow(节点跟随另一个节点移动)

4在实际中,主要用到的是CCFiniteTimeAction类,所以下面详细介绍这个类。

5 CCFiniteTimeAction分为CCActionInstant(瞬时动作)CCActionInterval(延迟动作)。其中CCActionInstant动作没有执行过程,动作瞬时完成,而CCActionInterval动作执行需要一定的时间(或者一个过程)

6在实际中,为了制作出炫丽的动画效果,使用得多的是CCActionInterval延时动作,下面开始介绍延迟动作

7在上面的类结构图中,CCActionInterval的子类很多,简单介绍其中常用的,也可以通过cocos2d-x中自带的TestCpp例子来学习

(1)CCMoveTo / CCMoveBy移动两者的主要差别在于CCMoveTo是移动到指定坐标,CCMoveBy是相对坐标。例如CCMoveTo(2.0f,ccp(50,50))是在2s时间内移动到点x = 50y = 50处,而CCMoveBy(2.0f,50))表示2s时间内向x方向移动50个单位,向y方向移动50个单位

(2)CCScaleTo / CCScaleBy缩放

(3)CCRotateTo / CCRotateBy旋转

(4)CCSkewTo / CCSkewBy扭曲

(5)CCJumpTo / CCJumpBy跳跃

(6)CCBezierTo / CCBezierBy贝塞尔曲线

(7)CCBink闪烁

(8)CCFadeIn / CCFadeOut淡入淡出

(9)CCTintTo / CCTintBy染色

8动作的一个简单用法

CCSprite *heroSprite = CCSprite::create(“hero.png”);

CCMoveTo *move = CCMoveTo::create(2.0f,50));

heroSprite->runAction(move);



瞬时动作
CCActionInstant(基类)
就是上面继承关系中的CCHide,CCPlace,CCShow什么的
瞬时动作的完成是不需要时间的,就像类图中的show,hide等等,他展现的是一种状态,一般我们将瞬时的动作和其他的动作组合起来,这个没什么好说的。

延时动作
CCActionInterval(基类)
就是说动作的执行需要持续一段时间
继续看继承关系

(编辑:李大同)

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

    推荐文章
      热点阅读