动作类(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. uLua学习笔记(三):Unity3D和Lua之间的相互调用

    这篇笔记主要集中学习一下uLua和Unity3D之间相互调用的方法,我们导入了uLua之后,现在会弹出一个类似学习屏幕的东西,如下: 先赞一个! Unity3D调用Lua Unity3D调用Lua的方 ...

  2. Objective-C的singleton模式

    最近因为在ios应用开发中,考虑到一些公共方法的封装使用,就决定使用单例模式的写法了..不知道,Object-c中的单例模式的写法是否和java中的写法是否有所区别?于是阿堂从网上一搜,发现“ Obj ...

  3. 项目经验之:再来一章:excel导入数据 封装成最棒的不容易!!!

    我见过很的系统,包括OA,ERP,CRM等,在常用的功能当中,从外部导入数据是最常用到的.因为很多客户需要以excel的形式提供数据,,这样的方式我们又如何做呢, 大家最常见的做法可能是这样的,在需要 ...

  4. PC/UVa 题号: 110101/100 The 3n+1 problem (3n+1 问题)

     The 3n + 1 problem  Background Problems in Computer Science are often classified as belonging to a ...

  5. 用Spring3编写第一个HelloWorld项目

    第一个HelloWorld程序 让我们用Spring来写第一个应用程序吧. 完成这一章要求: 熟悉Java语言 设置好Spring的环境 熟悉简单的Eclipse IDE的操作 如果你还没有设置好环境 ...

  6. 关于打包android自己编写的第三方library提供jar

    最近公司要求把应用的接口写成sdk提供给别人使用,写好了之后,发现导出来jar包怎么使用也有误,在运行时会报java.lang.NoClassDefFoundError的错,于是纠结了很久,突然在博客 ...

  7. [AngularJS] Consistency between ui-router states and Angular directives

    ui-router's states and AngularJS directives have much in common. Let's explores the similarities bet ...

  8. Centos 6.5使用Bumblebee关闭N卡,冷却你的电脑

    夏天来了,笔记本装的Centos一直非常热.随着天气的变化,这个问题真的要攻克了.差了下原因可能是双显卡笔记本,N卡驱动不完好,导致风扇狂叫. 昨天安装了nvidia 的显卡驱动本以为时间安静了.但是 ...

  9. Metadata Lock原理1

    https://www.percona.com/blog/2013/02/01/implications-of-metadata-locking-changes-in-mysql-5-5/ impli ...

  10. 利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备

    『Composer 一统天下的时代已经到来!』——白岩松 “一个时代结束了,另一个时代开始了.” Framework Interoperability Group(框架可互用性小组),简称 FIG,成 ...