Cocos引擎中的动作类的关系图例如以下:

能够看出,Action是继承自Ref类的,之前我的博客中也有讲过,Ref类是cocos2dx全部类的基类。动作类(Action)是全部动作的基类。它通过create()方法创建的一个对象代表一个动作

动作类(Action)作为基类。实际上是一个接口,动作类的大多数实现类都派生于有限时间动作类(FiniteTimeAction)。

在实际开发中我们通经常使用到两类动作:即时动作(ActionInstant)和持续动作(ActionInterval),它们均继承于有限时间动作类。

注意,动作作用于Node,因此每一个create出来的动作对象都须要由Node对象运行。



什么是即时动作?

即时动作(ActionInstant)指可以立马完毕的动作,这类动作是在下一帧立马完毕的动作。也就是说即时动作是没有运行时间的,你一旦runAction()这个动作就会被立即运行。如设定位置、设定缩放等属性。把它们包装成动作后,可以与其它动作类组合为复杂动作。

即时动作ActionInstant类的子类包含:

接下来就举几个使用即时动作的样例:

例1:比方要运行Place动作,Place是通过动作来改变node的位置,事实上和setPosition()效果一样:

//创建一个place动作
auto _placeAction = Place::create(Vec2(100,100));
sprite->runAction(_placeAction);

例2:再比方show、hide。与setVisible()效果一样:

//创建hide动作
auto _hideAction = Hide::create();
sprite->runAction(_hideAction); //创建show动作
auto _showAction = Show::create();
sprite->runAction(_showAction);

例3:这里要着重说一个动作:CallFunc。这个动作须要绑定一个回调函数,CallFunc绑定回调函数有2种方法:

方法1.绑定Lamada表达式:

//创建CallFunc动作
auto _callFuncAction = CallFunc::create([](){
log("callfunc run finished");
});
sprite->runAction(_callFuncAction);

方法2.绑定一个函数CCcallback

1).首先在头文件声明callfunc动作的回调函数callfuncCallback

void callfuncCallback();

2).然后在.cpp中实现callfunc动作的回调函数callfuncCallback

void HelloWorld::callfuncCallback()
{
log("callfuncCallback!");
}

3).最后将CCcallback函数绑定callfunc动作:

auto _callFuncAction = CallFunc::create(CC_CALLBACK_0(HelloWorld::callfuncCallback,this));
sprite->runAction(_callFuncAction);

其它动作的也都是通过create()创建,之后一个node运行其runAction()方法,把动作作为參数传入运行。

以上。

COCOS学习笔记--即时动作ActionInstant的更多相关文章

  1. COCOS学习笔记--持续动作ActionInterval

    上一篇博客介绍了即时动作ActionInstant.与即时动作相对的是持续动作ActionInterval. 顾名思义,持续动作就是须要一段时间来持续运行的动作,而且在有限时间内改变运行对象的一些属性 ...

  2. COCOS学习笔记--变速动作Speed和ActionEase

    变速动作和复合动作类似.也是一种特殊的动作,它能够把不论什么动作依照改变后的速度运行.变速动作与复合动作最大的差别就是复合动作仅仅是单纯的组合一系列动作,而变速的做在组合一系列动作后还要去改变动作的运 ...

  3. 重温JSP学习笔记--JSP动作标签

    上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...

  4. COCOS学习笔记--重力感应Acceleration

    Cocos2dx重力感应Acceleration,准确来说叫加速度计,加速度计能够感应设备上X.Y.Z轴方向上线性加速度的变化.事实上叫"重力感应"或"重力加速度计&qu ...

  5. COCOS学习笔记--Cocod2dx内存管理(三)-Coco2d-x内存执行原理

    通过上两篇博客.我们对Cocos引用计数和Ref类.PoolManager类以及AutoreleasePool类已有所了解,那么接下来就通过举栗子来进一步看看Coco2d-x内存执行原理是如何的. / ...

  6. cocos学习笔记:快速上手

    cc.Class({ //奇怪的语法风格,cc.class, extends: cc.Component, //扩展自cc.Component properties: { //类的属性设置 jumpH ...

  7. COCOS学习笔记--关于使用cocostudio打安卓包

    我在之前的博客里也写到过,如今cocos引擎提供了一键打包.很方便. 今天正好做个測试,想用引擎的一键打包弄个apk的安卓包.以下就简介一下详细过程和自己的一些理解: 先说一下项目背景,因为我的电脑是 ...

  8. 1.2(学习笔记) JSP动作元素

    动作元素 jsp:useBean:根据指定类实例化一个对象,类似Preson per = new Preson(); <jsp:useBean id="对象名" class ...

  9. COCOS学习笔记--Button类及其相关控件属性

    一.Button介绍 Button就是button.Cocos中提供了Button类对button进行相关的操作.我们看一下Button类继承关系图: 能够看到.Button是继承自Widget类,W ...

随机推荐

  1. 计算机中的CPU

    今天写一下计算机中最核心的一部分,就是计算机的大脑---CPU.CPU也就是中央处理器(Central Processing Unit).中央处理器是一块超大规模的集成电路,是一台计算机的运算核心(C ...

  2. OpenMP用法大全

    OpenMP基本概念OpenMP是一种用于共享内存并行系统的多线程程序设计方案,支持的编程语言包括C.C++和Fortran.OpenMP提供了对并行算法的高层抽象描述,特别适合在多核CPU机器上的并 ...

  3. 集训第六周 数学概念与方法 数论 筛素数 H题

    Description 小明对数的研究比较热爱,一谈到数,脑子里就涌现出好多数的问题,今天,小明想考考你对素数的认识.  问题是这样的:一个十进制数,如果是素数,而且它的各位数字和也是素数,则称之为“ ...

  4. NRF24L01注意点

    nrf24L01被设置为接收模式后,可通过6个不同的数据通道(data pipe)接收数据. 每个数据通道都有一个唯一的地址但是各数据通道的频率是相同的.这意味着可以有6个被配置成发送状态的nRF24 ...

  5. 有三个数a,b,c要求按大小顺序将其输出<if,else语句的学习>

    #include <stdio.h> /* 有三个数a,b,c要求按大小顺序将其输出 ----------soulsjie 20170525------ */ void main(){ i ...

  6. 跨域请求Ajax(POST)处理方法

    getXSSAjax(function() {  //跨域请求        that.ajaxDara(self);}, (bs_tita.webapi || "http://webapi ...

  7. 【SGU194&ZOJ2314】Reactor Cooling(有上下界的网络流)

    题意: 给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质. 并且满足每根pipe一定的流 ...

  8. bootstrap删除模态框弹出并询问是否删除【通用删除模态框】

    普通的询问是否删除的对话框比较low,可以利用bootstrap的模态框代替普通的对话框来实现删除. 效果: 点删除的时候弹出模态框询问是否删除,点确认的时候将需要删除的ID传到后台进行删除.  过程 ...

  9. ArrayAdapter的使用

    package com.pingyijinren.test; import android.content.Context; import android.view.LayoutInflater; i ...

  10. android中webview的实现

    设置从当前页面打开链接,而不是跳转到系统默认浏览器打开: webview.setWebViewClient(new WebViewClient(){ @Override public boolean ...