动作类(Action)是所有动作的基类,它创建的一个对象代表一个动作。动作作用于Node,包括继承于之下的Layer、Sprite。因此每个动作 都需要由Node对象或者其继承者执行。动作类(Action)作为基类,实际上是一个接口,动作类的大多数实现类都派生于有限时间动作类 (FiniteTimeAction)。其关系图如下:

在实际开发中我们通常用到两类动作-即时动作和持续动作,它们均继承于有限时间动作类。

1. 即时动作

放置–Place

隐藏– Hide

显示– Show

可见切换–ToggleVisibility

2.延时动作

移动到–MoveTo

移动– MoveBy

跳跃到–JumpTo

跳跃–JumpBy

贝塞尔–BezierBy

放大到–ScaleTo   设置放大倍数,是浮点型。

放大–ScaleBy

旋转到–RotateTo

旋转–RotateBy

闪烁–Blink   设定闪烁次数

色调变化到–TintTo

色调变换–TintBy

变暗到–FadeTo

由无变亮–FadeIn

由亮变无–FadeOut

3.组合动作

序列– Sequence

同步–Spawn

重复有线次数–Repeate

动作反向–Reverse

动画–Animation

无限重复–RepeatForever

4.速度变化

EaseIn 由慢至快。

EaseOut 由快至慢

EaseInOut 由慢至快再由快至慢。

EaseSineIn 由慢至快。

EaseSineOut
由快至慢

EaseSineInOut
由慢至快再由快至慢。

EaseExponentialIn
由慢至极快。

EaseExponentialOut
由极快至慢。

EaseExponentialInOut由慢至极快再由极快至慢。

Speed 人工设定速度,还可通过SetSpeed不断调整

下面以几个常用函数作为案例:

     Menu * menu =Menu::create();

     menu ->setPosition(Vec2::ZERO);

     addChild(menu);

     //-----------------------------------------------------------------------
//Flip
MenuItemFont * FlipItem =MenuItemFont::create("Filp",CC_CALLBACK_1(NewScene::bgFlip, this)); FlipItem ->setPosition(,); menu->addChild(FlipItem); void NewScene::bgFlip(Ref * ref)
{
if (testSp ->isFlippedX())
{ FlipX * fx = FlipX ::create(false); testSp ->runAction(fx); }
else
{ FlipX * fx = FlipX ::create(true); testSp ->runAction(fx);
}
} //-----------------------------------------------------------------------
//MoveTo
MenuItemFont * MoveItem =MenuItemFont::create("MoveTo",CC_CALLBACK_1(NewScene::bgMove, this)); MoveItem ->setPosition(,); menu->addChild(MoveItem); void NewScene::bgMove(Ref* psend)
{
MoveTo * moveAct = MoveTo::create(0.5,Vec2(, )); testSp ->runAction(moveAct);
} //-----------------------------------------------------------------------
//RatateTo
MenuItemFont * RotateItem =MenuItemFont::create("RotateTo",CC_CALLBACK_1(NewScene::bgRotate, this)); RotateItem ->setPosition(,); menu->addChild(RotateItem); void NewScene::bgRotate(Ref * ref)
{
RotateTo * rotate =RotateTo::create(0.5, , ); testSp ->runAction(rotate);
} //-----------------------------------------------------------------------
//ScaleTo
MenuItemFont * ScaleItem =MenuItemFont::create("ScaleTo",CC_CALLBACK_1(NewScene::bgScale, this)); ScaleItem ->setPosition(,); menu->addChild(ScaleItem); void NewScene::bgScale(Ref* psend)
{
ScaleTo * scale =ScaleTo::create(0.5, ); testSp ->runAction(scale);
} //-----------------------------------------------------------------------
//Hide Show
MenuItemToggle * toggleMenu =MenuItemToggle::createWithCallback(
CC_CALLBACK_1(NewScene::bgToggle,this),
MenuItemFont::create("Show"),
MenuItemFont::create("Hide"),
NULL); toggleMenu ->setPosition(,); menu ->addChild(toggleMenu); void NewScene::bgToggle(Ref * ref)
{
if(testSp->isVisible())
{
Hide * hide =Hide::create();
testSp ->runAction(hide);
ShowTag =;
}
else
{
Show * show =Show ::create();
testSp ->runAction(show);
ShowTag =;
} } //-----------------------------------------------------------------------
//FadeIn FadeOut
MenuItemToggle * FadeToggle =MenuItemToggle::createWithCallback(
CC_CALLBACK_1(NewScene::FadeToggle,this),
MenuItemFont::create("FadeIN"),
MenuItemFont::create("FadeOut"),
NULL); FadeToggle ->setPosition(,); menu ->addChild(FadeToggle); void NewScene::FadeToggle(Ref * ref)
{
if(FadeTag == )
{
FadeOut * FadeOut = FadeOut ::create(); testSp ->runAction(FadeOut); FadeTag = ;
}
else if (FadeTag == )
{
FadeIn * FadeIn = FadeIn ::create(); testSp ->runAction(FadeIn); FadeTag = ;
} } //-----------------------------------------------------------------------
//曲线运动
MenuItemFont * Cardin =MenuItemFont::create("Cardin",CC_CALLBACK_1(NewScene::CardIn, this)); Cardin ->setPosition(,); menu->addChild(Cardin); void NewScene::CardIn(Ref * ref)
{
PointArray * array = PointArray ::create(); array ->addControlPoint(Point(,)); array ->addControlPoint(Point(,)); array ->addControlPoint(Point(,)); CardinalSplineTo * CardIn = CardinalSplineTo::create(, array, ); testSp ->runAction(CardIn);
}

注意:这里需要注意To跟By的不同,To的话在坐标系中是以绝对位置,By的话在坐标系中是以node对象的相对位置进行执行动作。

如果你想搭配reverse()一起用的话用To是无效的,必须用By.

Ok.关于Cocos2d-x的动作就分享至此。不对的地方还望指出互相探讨学习

 

【Cocos2d入门教程五】Cocos2d-x动作篇的更多相关文章

  1. 无废话ExtJs 入门教程五[文本框:TextField]

    无废话ExtJs 入门教程五[文本框:TextField] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个两个文本框.如下所示代码区的第42行位置,items: ...

  2. PySide——Python图形化界面入门教程(五)

    PySide——Python图形化界面入门教程(五) ——QListWidget 翻译自:http://pythoncentral.io/pyside-pyqt-tutorial-the-qlistw ...

  3. Elasticsearch入门教程(五):Elasticsearch查询(一)

    原文:Elasticsearch入门教程(五):Elasticsearch查询(一) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...

  4. RabbitMQ入门教程(五):扇形交换机发布/订阅(Publish/Subscribe)

    原文:RabbitMQ入门教程(五):扇形交换机发布/订阅(Publish/Subscribe) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. ...

  5. 【Cocos2d入门教程六】Cocos2d-x事件篇之触摸

    Cocos游戏当中产生一个事件时,可以有多个对象在监听该事件,所以有优先级(Priority).优先级越高(Priority值越小),事件响应越靠前. 关系图: 新 事件分发机制:在2.x 版本事件处 ...

  6. WebGL入门教程(五)-webgl纹理

    前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 WebGL入门教程(四)-webgl颜色 这里就需要用到 ...

  7. WCF入门教程五[WCF的通信模式]

    一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 描述: 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务 ...

  8. 无废话WCF入门教程五[WCF的通信模式]

    一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 描述: 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务 ...

  9. Spring Cloud 入门教程(五): Ribbon实现客户端的负载均衡

    接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端 ...

随机推荐

  1. 学习linux必备服务器VPS

    有很多和老沙一样喜欢linux或者喜欢架设服务器的朋友,因为没有linux环境在本机弄个虚拟机说实话很卡很不方便.老沙今天给大家推荐一款国外VPS,比这国内的云服务器便宜的太多了,年付19.99美元. ...

  2. uva11324 The Largest Clique --- 强连通+dp

    给一个有向图G,求一个子图要求当中随意两点至少有一边可达. 问这个子图中最多含多少个顶点. 首先找SCC缩点建图.每一个点的权值就是该点包括点的个数. 要求当中随意两点可达,实际上全部边仅仅能同方向, ...

  3. apacheserver下载、安装、配置

     1.下载 下载地址:apache下载地址 点击左側"Download"下的链接,打开例如以下页面 这里能够选择版本号.我选择2.4.16.单击"2.4.16" ...

  4. Ubuntu下多服务器 Rsync同步镜像服务配置

    主服务器:192.168.5.13_ubuntu 从服务器:192.168.5.11_centos ================== 1> 在两台主机上分别安装rsync========== ...

  5. Xcode8中Swift3.0适配问题

    写在前面 收到一些小伙伴的来信,觉得可能下边没有表达清楚,先把大家关心的要点在此进行总结,有兴趣的可以看看下边的研究过程,没兴趣的直接看这段即可. Xcode8支持Swift2.3和Swift3.0两 ...

  6. Java中介者设计模式

    中介者设计模式是一种很常见的设计模式,当中我们最为熟悉的就是我们的MVC框架.当中的C作为控制器就是一个详细的中介者,它的作用是把业务逻辑(Model),和视图(Viwe)隔离开来.使M V协调工作, ...

  7. UVA 1401 - Remember the Word(Trie+DP)

    UVA 1401 - Remember the Word [题目链接] 题意:给定一些单词.和一个长串.问这个长串拆分成已有单词,能拆分成几种方式 思路:Trie,先把单词建成Trie.然后进行dp. ...

  8. null和空 not null

    所谓的NULL就是什么都没有,连\0都没有,\0在字符串中是结束符,但是在物理内存是占空间的,等于一个字节,而NULL就是连这一个字节都没有.在 数据库里是严格区分的,任何数跟NULL进行运算都是NU ...

  9. Online DDL与pt-online-schema-change

    http://seanlook.com/2016/05/24/mysql-online-ddl-concept/ http://seanlook.com/2016/05/27/mysql-pt-onl ...

  10. qsort函数、sort函数 (精心整理篇)

    先说明一下qsort和sort,只能对连续内存的数据进行排序,像链表这样的结构是无法排序的. 首先说一下, qsort qsort(基本快速排序的方法,每次把数组分成两部分和中间的一个划分值,而对于有 ...