`
lizhuohuang
  • 浏览: 119972 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CCAction

 
阅读更多

转载 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示例

    本资源"CCAction示例"是针对Cocos2dx中的核心组件之一——Action的详细学习资料,包含了文档、源码和视频教程,旨在帮助开发者深入理解和应用Action进行游戏场景的动态效果创建。 Action是Cocos2d-x中用于创建动画...

    05_CCAction1

    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:android cocos2d 练习

    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:android cocos2d 练习

    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)

    ### cocos2d-x初探学习笔记(3)—— 动作(CCAction) #### 内存自动回收 在深入探讨`cocos2d-x`的动作系统之前,我们首先需要了解该框架提供的内存管理机制。与Java等语言不同,C++需要开发者手动管理内存,这在...

    Cocos2d-x_中文API部分文档

    ### Cocos2d-x 中文API部分文档:CCAction与CCActionManager类详解 #### CCAction 类 **概述** CCAction 是 Cocos2d-x 中用于处理动画效果的基础类,几乎所有的动画效果都是通过继承此类来实现的。该类提供了一...

    Cocos2d-x 中文API部分文档

    本文档主要关注Cocos2d-x中的API,特别是与动作(CCAction)相关的部分。Cocos2d-x的动作系统允许开发者创建丰富的动画效果和游戏逻辑。 **CCAction类**是所有动作的基础类,提供了动作的基本行为。`CCAction`包含...

    cocos2d的API

    接下来,我们来深入了解一些Cocos2d中关于CCAction类及CCActionManager类的API知识点。 ### CCAction类 CCAction是Cocos2d中动作类的基类,提供了一系列用于游戏对象动作行为的接口,开发者通过继承和实现这些接口...

    cocos2d-x游戏特效

    cocos2d-x的动作系统基于CCAction类,该类是CCObject的子类,设计用于操作所有的CCNode及其子类。CCAction包含了各种动作,如位置移动、旋转、缩放等,这些动作能够帮助开发者构建复杂的动画序列。 **CCAction类的...

    cocos2d-x面试题DOCX文档

    本文档总结了cocos2d-x面试题,涵盖了CCScene、CCLayer、CCSprite、CCNode、CCAction、CCDirector、CCEGLView等重要概念,并提供了相关的知识点。 一、CCScene和CCLayer CCScene是app工作流程上独立的块,一个app...

    cocos2d 游戏菜单设置v1

    描述中提到的“动画效果”,在Cocos2D中可以通过`CCAction`来实现。Cocos2D提供了一系列的动作类,如`CCMoveTo`(移动到指定位置)、`CCScaleTo`(缩放至指定大小)、`CCTintTo`(颜色变化)等,可以应用于任何可...

    coco2d-x面试题(无脑码农).pdf,这是一份不错的文件

    - **CCAction** 是动作的基类,可以是有限时间动作(CCFiniteTimeAction)或瞬时动作(CCActionInstant)。CCAction实例执行一次即完成,而CCActionInterval则在指定时间间隔内执行。 - **CCActionMessage** 是...

    cocos2d-x简单绘图

    `CCAction`则是定义动画的关键,它可以控制精灵的行为。 为了实现简单动画绘图,我们首先需要创建一个新的CCLayer。在VS2010中,你可以创建一个新的C++类,继承自`CCLayer`。在构造函数中,我们可以加载图片资源并...

    iOS实例开发源码——GloryFish-Cocos2D-Iris-Effects-afcdbff.zip

    例如,`CCScene`是游戏的主要容器,`CCNode`是所有可显示对象的基类,`CCAction`负责对象的行为和动画,而`CCSprite`则用于绘制2D图像。通过对这些类的深入理解和实践,开发者能够掌握Cocos2D的基本编程技巧。 此外...

    cocos2d-x API大全中文版2016

    API大全中详细列出了各种类和函数,包括CCNode、CCDirector、CCLayer、CCSprite、CCAction等关键类的用法。例如,CCNode是所有节点类的基类,它提供了基本的位置、旋转、缩放等属性和方法;CCDirector负责管理游戏的...

    iOS游戏应用源代码——LearnCocos2D-LearnCocos2D-f9ea793.zip

    4. **CCAction**: 定义了一系列可执行的动作,如移动、旋转、淡入淡出等,可以组合使用创建复杂的动画效果。 5. **CCMenu** 和 **CCMenuItem**: 用于创建游戏菜单,提供玩家交互界面。 6. **CCPhysicsNode** 和 **...

    跨平台的游戏引擎cocos2d-x介绍

    CCScene和CCLayer分别代表场景类和图层类,而CCSprite和CCAction则分别用于精灵和动作效果的实现,如移动(Move)、缩放(Scale)、旋转(Rotate)等。 图形引擎还包含了一些附加部分,比如帧动画功能。帧动画的...

    【游戏】-Cocos2D 制作的小球消除游戏.7z

    在这个游戏中,小球消除后的爆炸动画和新小球下落的动态效果,都是通过CCAction实现的。 5. **用户交互**: Cocos2D支持触摸事件处理,使得玩家可以通过触摸屏幕来移动和发射小球。开发者需要编写触摸监听器,解析...

    我自己的cocos2d学习资料源码

    在Cocos2d中,你可以使用`CCAction`类来创建各种动画效果,例如对象的移动、旋转和缩放。游戏逻辑可能涉及数组操作和算法,如邻接矩阵或链表,用于处理方块的匹配和消除。 3. **移动控制**: 移动控制通常指的是...

Global site tag (gtag.js) - Google Analytics