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. 谈谈如何来查看GC日志

    一.首先来看一下JVM中的GC有哪几种类型? 1.-XX:UseSerialGC 虚拟机运行在Client模式的默认值,打开此开关参数后,使用Serial+Serial Old收集器组合进行垃圾收集. ...

  2. Android全局异常捕获

    PS:本文摘抄自<Android高级进阶>,仅供学习使用 Java API提供了一个全局异常捕获处理器,Android引用在Java层捕获Crash依赖的就是Thread.Uncaught ...

  3. 第1节 yarn:13、yarn资源调度的介绍

    Yarn资源调度 yarn集群的监控管理界面: http://192.168.52.100:8088/cluster jobHistoryServer查看界面: http://192.168.52.1 ...

  4. Conv1D和Conv2D的区别

    我的答案是,在Conv2D输入通道为1的情况下,二者是没有区别或者说是可以相互转化的.首先,二者调用的最后的代码都是后端代码(以TensorFlow为例,在tensorflow_backend.py里 ...

  5. 管理Fragments

    FragmentManager 为了管理Activity中的fragments,需要使用FragmentManager. 为了得到它,需要调用Activity中的getFragmentManager( ...

  6. 禁止浏览器static files缓存篇

    由于CSS/JS文件经常需要改动,前端调试时是不希望浏览器缓存这些文件的. Meta法 目前在chrome调试还没有遇到问题,好用!此方法假设浏览器是个好人!很听我们的话! <meta http ...

  7. 零基础入门学习Python(23)--递归:这帮小兔崽子

    知识点 我们都知道兔子繁殖能力是惊人的,如下图: 我们可以用数学函数来定义: 假设我们需要求出经历了20个月后,总共有多少对小兔崽子? 迭代实现 def fab(n): n1 = 1 n2 = 1 n ...

  8. SAX解析XML-例子

    1.要解析的xml <?xml version="1.0" encoding="UTF-8"?> <employees> <emp ...

  9. jmeter 性能插件

    mv jmeter-plugins-manager-0.16.jar /usr/local/Cellar/jmeter/3.1/libexec/lib/ext http://www.cnblogs.c ...

  10. jmeter 接口测试

    web接口测试工具: 手工测试的话可以用postman ,自动化测试多是用到 Jmeter(开源).soupUI(开源&商业版). 下面将对前一篇Postman做接口测试中的接口用Jmeter ...