【Cocos2d入门教程五】Cocos2d-x动作篇
动作类(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动作篇的更多相关文章
- 无废话ExtJs 入门教程五[文本框:TextField]
无废话ExtJs 入门教程五[文本框:TextField] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个两个文本框.如下所示代码区的第42行位置,items: ...
- PySide——Python图形化界面入门教程(五)
PySide——Python图形化界面入门教程(五) ——QListWidget 翻译自:http://pythoncentral.io/pyside-pyqt-tutorial-the-qlistw ...
- Elasticsearch入门教程(五):Elasticsearch查询(一)
原文:Elasticsearch入门教程(五):Elasticsearch查询(一) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:h ...
- RabbitMQ入门教程(五):扇形交换机发布/订阅(Publish/Subscribe)
原文:RabbitMQ入门教程(五):扇形交换机发布/订阅(Publish/Subscribe) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. ...
- 【Cocos2d入门教程六】Cocos2d-x事件篇之触摸
Cocos游戏当中产生一个事件时,可以有多个对象在监听该事件,所以有优先级(Priority).优先级越高(Priority值越小),事件响应越靠前. 关系图: 新 事件分发机制:在2.x 版本事件处 ...
- WebGL入门教程(五)-webgl纹理
前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 WebGL入门教程(四)-webgl颜色 这里就需要用到 ...
- WCF入门教程五[WCF的通信模式]
一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 描述: 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务 ...
- 无废话WCF入门教程五[WCF的通信模式]
一.概述 WCF在通信过程中有三种模式:请求与答复.单向.双工通信.以下我们一一介绍. 二.请求与答复模式 描述: 客户端发送请求,然后一直等待服务端的响应(异步调用除外),期间处于假死状态,直到服务 ...
- Spring Cloud 入门教程(五): Ribbon实现客户端的负载均衡
接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端 ...
随机推荐
- 学习微软中间语言(MSIL)的绝佳工具 Dotnet IL Editor 推荐
Dotnet IL Editor是一款.NET平台反编译工具,可以反编译.NET程序集文件为IL代码,并且可以执行,调试反编译后生成的IL代码.它的设计出发点比较直观,新建一个项目,添加程序集文件,设 ...
- JS Math 类库介绍
下面介绍下随机生成数的常用几个API JS 随机数生成 : 在JavaScript , 提供了生成随机数的API, Math.random() 1.Math.random() : 随机生成小数 . 生 ...
- Bump mapping的GLSL实现 [转]
原文 http://www.cnblogs.com/CGDeveloper/archive/2008/07/03/1234206.html 如果物体表面细节很多,我们可以不断的精细化物体的几何数据,但 ...
- 【转】DLX 精确覆盖 重复覆盖
问题描述: 给定一个n*m的矩阵,有些位置为1,有些位置为0.如果G[i][j]==1则说明i行可以覆盖j列. Problem: 1)选定最少的行,使得每列有且仅有一个1. 2)选定最少的行,使得每列 ...
- android service总结
1.通过startservice方法启动一个服务.service不能自己启动自己.若在一个服务中启动一个activity则,必须是申明一个全新的activity任务TASK.通过startservic ...
- ANE在ios上的使用流程和问题解决
编写ANE流程: 1. 在xcode里编写.a原生类库 2. 更改配置文件extension.xml, 定义了原生程序的扩展接口 3. 编写AS替身类,生成扩展类包.swc,解压再得到library. ...
- springMVC2 1入门程序
1入门程序 .1需求 实现商品列表查询 .2需要的jar包 使用spring3.2.0(带springwebmvc模块) .1前端控制器 在web.xml中配置: <?xml version=& ...
- linux编程基础
http://blog.csdn.net/jnu_simba/article/details/8806654
- 关于使用NotificationComat导致android2.3及以下版本无法显示自定义布局的解决方法.
大伙都知道 android-support-v4为我们提供了很多兼容的解决方案, 其中就有关于通知栏的. NotificationCompat, 顺利成章操刀显示通知. eg: Intent inte ...
- PHP.3-DIV+CSS标准网页布局准备工作(上)
DIV+CSS标准网页布局准备工作(上) 概述 使用"DIV+CSS"对网站进行布局符合W3C标准,采用这种方式布局通常是为了说明与HTML表格定位方式的区别.因为现在的网站设计标 ...