转载 http://www.2cto.com/kf/201210/164287.html
CCAction及它的子类就是起着这样的作用,它是通过改变这些实体的属性实现的,下面是它的类结构图。
从结构图可以看出,动作类的基类是CCAction,通过继承它可以实现很多种动作。CCFiniteTimeAction:有限次动作执行类,就是按时 间顺序执行一系列动作,执行完后动作结束;CCSpeed:调整实体(节点)的执行速度;CCFollow:可以使节点跟随指定的另一个节点移动。下面我 们主要来学习CCFiniteTimeAction,这个类在平常的开发中很常见。
CCFiniteTimeAction又分为CCActionInstanse(瞬时动作的基类)和CCActionInterval(延时动作的 基类)。CCActionInstanse:没什么特别,跟CCActionInterval主要区别是没有执行过程,动作瞬间就执行完成 了;CCActionInterval:执行需要一定的时间(或者说一个过程)。我们用的最多的就是延时动作,下面对它进行单独介绍。
根据上面的类结构图,CCActionInterval的子类有很多,可以通过cocos2d-x自带的tests例子来学习,主要有这些动作:移 动(CCMoveTo/CCMoveBy)、缩放(CCScaleTo/CCScaleBy)、旋转(CCRotateTO/CCRotateBy)、扭 曲(CCSkewTo/CCSkewBy)、跳跃(CCJumpTo/CCJumpBy)、贝塞尔曲线(CCBezierTo/CCBezierBy)、 闪烁(CCBink)、淡入淡出(CCFadeIn/CCFadeOut)、染色(CCTintTo/CCTintBy)等,还可以把上面这些动作的几个 组合成一个序列。下面是移动和缩放动作的代码示例,其他的动作都类似,都是调用actionWithDuration函数,用到的时候具体参数的含义可以 参考cocos2d-x自带的tests例子。
CCMoveTo和CCMoveBy
移动精灵,两者的区别在于:CCMoveTo是移动到指定坐标,CCMoveBy是相对坐标。如ccp(50,50),前者表示移动到x=50,y=50处,后者表示向x方向移动50个单位,向y方向移动50个单位。实例代码如下:
[cpp]
CCSize winSize = CCDirector::sharedDirector()->getWinSize();
CCActionInterval* actionMoveTo = CCMoveTo::actionWithDuration(2,ccp(winSize.width - 30,winSize.height - 30) );
CCActionInterval* actionMoveBy = CCMoveBy::actionWithDuration(1,ccp(-50,-50) );
//m_Soldier->runAction(actionMoveTo);
//m_Soldier->runAction(actionMoveBy);
m_Soldier->runAction( CCSequence::actions(actionMoveTo,actionMoveBy,NULL) );
CCSequence是动作序列,把若干个动作按顺序组合在一起,然后依次执行,NULL是结束标志。上面代码表示该精灵移动到屏幕右上角,然后沿x轴和y轴负方向移动50个单位。
CCScaleTo和CCScaleBy
缩放精灵,前者表示缩放到xx倍;后者表示缩放xx倍。可以分别制定横向和纵向的缩放倍数,实例代码如下:
[cpp]
CCActionInterval* actionScaleTo = CCScaleTo::actionWithDuration(1, 0.6f);
CCActionInterval* actionScaleTo2 = CCScaleTo::actionWithDuration(1, 0.6f, 1.5f);
CCActionInterval* actionScaleBy = CCScaleBy::actionWithDuration(1, 0.4f);
CCActionInterval* actionScaleBy2 = CCScaleBy::actionWithDuration(1, 0.4f, 2.0f);
m_Soldier->runAction( actionScaleTo );
tempSoldier->runAction( CCSequence::actions(actionScaleBy2, actionScaleBy2->reverse(), NULL) );
reverse()表示执行该动作的逆动作,即恢复到原样。
接下来学习一下CCSpawn、CCRepeatForever、CCRepeat、CCDelayTime。
CCSpawn:跟CCSequence不一样的是,它表示将若干个动作组合在一起,同时执行它们(并行执行),执行时间以最长的那个动作为准。下面代码 表示:精灵边旋转边跳跃,2秒的时间跳跃4次,每次跳跃的高度是50个单位,沿x轴方向跳跃300个单位的距离;旋转720度。
[cpp]
CCAction* action = CCSpawn::actions(
CCJumpBy::actionWithDuration(2, CCPointMake(300,0), 50, 4),
CCRotateBy::actionWithDuration( 2, 720),
NULL);
m_grossini->runAction(action);
CCRepeatForever:表示无限的重复执行某个动作或动作序列。
CCRepeat:表示重复执行某个动作或者动作序列,但是是有限次的重复,可以指定重复次数
[cpp] www.2cto.com
CCActionInterval* act1 = CCRotateTo::actionWithDuration(1, 90);
CCActionInterval* act2 = CCRotateTo::actionWithDuration(1, 0);
CCActionInterval* seq = (CCActionInterval*)(CCSequence::actions(act1, act2, NULL));
CCAction* rep1 = CCRepeatForever::actionWithAction(seq);
CCActionInterval* rep2 = CCRepeat::actionWithAction((CCFiniteTimeAction*)(seq->copy()->autorelease()), 10);
m_tamara->runAction(rep1);
m_kathia->runAction(rep2);
CCDelayTime:表示延迟,在动作之间加一个间歇时间。如下面的代码表示:精灵执行一个move动作后,暂停2秒,再继续执行后面的move动作。
[cpp]
CCActionInterval* move = CCMoveBy::actionWithDuration(1, CCPointMake(150,0));
CCFiniteTimeAction* action = CCSequence::actions( move, CCDelayTime::actionWithDuration(2), move, NULL);
m_grossini->runAction(action);
相关推荐
本资源"CCAction示例"是针对Cocos2dx中的核心组件之一——Action的详细学习资料,包含了文档、源码和视频教程,旨在帮助开发者深入理解和应用Action进行游戏场景的动态效果创建。 Action是Cocos2d-x中用于创建动画...
05_CCAction1 practice for android cocos2d The code project is base on Android Studio mac version to write. You can download Android Studio here ( ), and clone the code to run. The guide is here.千锋...
CCAction3 practice for android cocos2d The code project is base on Android Studio mac version to write. You can download Android Studio here ( ), and clone the code to run. The guide is here.千锋独家...
CCAction4 practice for android cocos2d The code project is base on Android Studio mac version to write. You can download Android Studio here ( ), and clone the code to run. The guide is here.千锋独家...
### cocos2d-x初探学习笔记(3)—— 动作(CCAction) #### 内存自动回收 在深入探讨`cocos2d-x`的动作系统之前,我们首先需要了解该框架提供的内存管理机制。与Java等语言不同,C++需要开发者手动管理内存,这在...
### Cocos2d-x 中文API部分文档:CCAction与CCActionManager类详解 #### CCAction 类 **概述** CCAction 是 Cocos2d-x 中用于处理动画效果的基础类,几乎所有的动画效果都是通过继承此类来实现的。该类提供了一...
本文档主要关注Cocos2d-x中的API,特别是与动作(CCAction)相关的部分。Cocos2d-x的动作系统允许开发者创建丰富的动画效果和游戏逻辑。 **CCAction类**是所有动作的基础类,提供了动作的基本行为。`CCAction`包含...
接下来,我们来深入了解一些Cocos2d中关于CCAction类及CCActionManager类的API知识点。 ### CCAction类 CCAction是Cocos2d中动作类的基类,提供了一系列用于游戏对象动作行为的接口,开发者通过继承和实现这些接口...
cocos2d-x的动作系统基于CCAction类,该类是CCObject的子类,设计用于操作所有的CCNode及其子类。CCAction包含了各种动作,如位置移动、旋转、缩放等,这些动作能够帮助开发者构建复杂的动画序列。 **CCAction类的...
本文档总结了cocos2d-x面试题,涵盖了CCScene、CCLayer、CCSprite、CCNode、CCAction、CCDirector、CCEGLView等重要概念,并提供了相关的知识点。 一、CCScene和CCLayer CCScene是app工作流程上独立的块,一个app...
描述中提到的“动画效果”,在Cocos2D中可以通过`CCAction`来实现。Cocos2D提供了一系列的动作类,如`CCMoveTo`(移动到指定位置)、`CCScaleTo`(缩放至指定大小)、`CCTintTo`(颜色变化)等,可以应用于任何可...
- **CCAction** 是动作的基类,可以是有限时间动作(CCFiniteTimeAction)或瞬时动作(CCActionInstant)。CCAction实例执行一次即完成,而CCActionInterval则在指定时间间隔内执行。 - **CCActionMessage** 是...
`CCAction`则是定义动画的关键,它可以控制精灵的行为。 为了实现简单动画绘图,我们首先需要创建一个新的CCLayer。在VS2010中,你可以创建一个新的C++类,继承自`CCLayer`。在构造函数中,我们可以加载图片资源并...
例如,`CCScene`是游戏的主要容器,`CCNode`是所有可显示对象的基类,`CCAction`负责对象的行为和动画,而`CCSprite`则用于绘制2D图像。通过对这些类的深入理解和实践,开发者能够掌握Cocos2D的基本编程技巧。 此外...
API大全中详细列出了各种类和函数,包括CCNode、CCDirector、CCLayer、CCSprite、CCAction等关键类的用法。例如,CCNode是所有节点类的基类,它提供了基本的位置、旋转、缩放等属性和方法;CCDirector负责管理游戏的...
4. **CCAction**: 定义了一系列可执行的动作,如移动、旋转、淡入淡出等,可以组合使用创建复杂的动画效果。 5. **CCMenu** 和 **CCMenuItem**: 用于创建游戏菜单,提供玩家交互界面。 6. **CCPhysicsNode** 和 **...
CCScene和CCLayer分别代表场景类和图层类,而CCSprite和CCAction则分别用于精灵和动作效果的实现,如移动(Move)、缩放(Scale)、旋转(Rotate)等。 图形引擎还包含了一些附加部分,比如帧动画功能。帧动画的...
在这个游戏中,小球消除后的爆炸动画和新小球下落的动态效果,都是通过CCAction实现的。 5. **用户交互**: Cocos2D支持触摸事件处理,使得玩家可以通过触摸屏幕来移动和发射小球。开发者需要编写触摸监听器,解析...
在Cocos2d中,你可以使用`CCAction`类来创建各种动画效果,例如对象的移动、旋转和缩放。游戏逻辑可能涉及数组操作和算法,如邻接矩阵或链表,用于处理方块的匹配和消除。 3. **移动控制**: 移动控制通常指的是...