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. 取消input聚焦时的边框,去除ios点击时,自动添加的底色效果

    /*去除ios点击时,自动添加的底色效果*/ -webkit-tap-highlight-color: rgba(, , , ); /*去除焦点框*/ outline:none;

  2. java解决动态的锁顺序死锁的方案

    直接上代码 public class Test3 { public static Object fromAccount = new String("1"); public stat ...

  3. wdcp 打开网页显示 Apache 2 Test Page powered by CentOS -- 来自辉哥博客

    是因为更新过系统,安装并更新了系统自带的apache 执行这个命令即可 #ln -sf /www/wdlinux/init.d/httpd /etc/rc.d/init.d/httpd#reboot ...

  4. Centos6.5下 执行“ll”提示“-bash: ll: command not found”

    ll 是 ls -l的别名,之所所以 ll出现错误是因为没有定义别名. 如果要实现ll 命令,可以做如下操作: 编辑 ~./bashrc 添加 ls -l 的别名为 ll即可 [root@Centos ...

  5. CSS+DIV命名

    原地址:http://www.cnblogs.com/hylaz/archive/2012/10/27/2742743.html#2521377 页头:header 登录条:loginBar 标志:l ...

  6. 输出一定范围unicode对应符号

    #本程序没有考虑对0x的处理,请勿输入,直接输入16进制位即可 begin = input("起始点:") end = input("结束点:") b_int0 ...

  7. poj2325 大数除法+贪心

    将输入的大数除以9 无法整除再除以 8,7,6,..2,如果可以整除就将除数记录,将商作为除数继续除9,8,...,3,2. 最后如果商为1 证明可以除尽 将被除过的数从小到大输出即可 #includ ...

  8. FPGA学习笔记(八)—— 状态机设计实例之独立按键消抖

    ###### [该随笔中部分内容转载自小梅哥] ######### 独立按键消抖自古以来在单片机和FPGA中都是个不可避免的问题,首先,解释一下什么叫做按键抖动,如图,按键在按下和松开的那个瞬间存在大 ...

  9. 【04】emmet系列之编辑器

     [01]emmet系列之基础介绍 [02]emmet系列之HTML语法 [03]emmet系列之CSS语法 [04]emmet系列之编辑器 [05]emmet系列之各种缩写 前端开发人员,常用的是s ...

  10. 九度oj 题目1077:最大序列和

    题目1077:最大序列和 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6435 解决:1931 题目描述: 给出一个整数序列S,其中有N个数,定义其中一个非空连续子序列T中所有数的和为T ...