COCOS学习笔记--即时动作ActionInstant
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的更多相关文章
- COCOS学习笔记--持续动作ActionInterval
		
上一篇博客介绍了即时动作ActionInstant.与即时动作相对的是持续动作ActionInterval. 顾名思义,持续动作就是须要一段时间来持续运行的动作,而且在有限时间内改变运行对象的一些属性 ...
 - COCOS学习笔记--变速动作Speed和ActionEase
		
变速动作和复合动作类似.也是一种特殊的动作,它能够把不论什么动作依照改变后的速度运行.变速动作与复合动作最大的差别就是复合动作仅仅是单纯的组合一系列动作,而变速的做在组合一系列动作后还要去改变动作的运 ...
 - 重温JSP学习笔记--JSP动作标签
		
上一篇笔记写的是jsp的三个指令九个内置对象,这篇随笔开始写jsp的动作标签,动作标签是由服务器(Tomcat)来解释执行,与java代码一样,都是在服务器端执行的,jsp动作标签有十几多个,这里只写 ...
 - COCOS学习笔记--重力感应Acceleration
		
Cocos2dx重力感应Acceleration,准确来说叫加速度计,加速度计能够感应设备上X.Y.Z轴方向上线性加速度的变化.事实上叫"重力感应"或"重力加速度计&qu ...
 - COCOS学习笔记--Cocod2dx内存管理(三)-Coco2d-x内存执行原理
		
通过上两篇博客.我们对Cocos引用计数和Ref类.PoolManager类以及AutoreleasePool类已有所了解,那么接下来就通过举栗子来进一步看看Coco2d-x内存执行原理是如何的. / ...
 - cocos学习笔记:快速上手
		
cc.Class({ //奇怪的语法风格,cc.class, extends: cc.Component, //扩展自cc.Component properties: { //类的属性设置 jumpH ...
 - COCOS学习笔记--关于使用cocostudio打安卓包
		
我在之前的博客里也写到过,如今cocos引擎提供了一键打包.很方便. 今天正好做个測试,想用引擎的一键打包弄个apk的安卓包.以下就简介一下详细过程和自己的一些理解: 先说一下项目背景,因为我的电脑是 ...
 - 1.2(学习笔记) JSP动作元素
		
动作元素 jsp:useBean:根据指定类实例化一个对象,类似Preson per = new Preson(); <jsp:useBean id="对象名" class ...
 - COCOS学习笔记--Button类及其相关控件属性
		
一.Button介绍 Button就是button.Cocos中提供了Button类对button进行相关的操作.我们看一下Button类继承关系图: 能够看到.Button是继承自Widget类,W ...
 
随机推荐
- Webpack 入门(一):安装 / 打包 / 命令行
			
一:安装webpack和基本环境搭建 新建一个工作的文件夹(我取的名字叫Webpack) 打开命令行,cd进入该文件夹 //初始化一下npm > E:\work\Webpack>npm i ...
 - vue组件之this指向问题
			
[问题描述] 返回顶部组件里,用到数据操作.通过方法里改动this数据,但发现直接使用失效 mounted() { window.onscroll=function(){ ) { this.isAct ...
 - 一篇文章告你python能做什么,该不该学?好不好学?适不适合学?
			
一.python好学吗?简单吗?容易学吗?没有编程的领取能学吗? 最近有很多小伙伴都在问我这些问题.在这里,我想说,python非常简单易学. 1,简单, Python 非常易于读写,开发者可以把更多 ...
 - php基础查找算法
			
1.顺序查找 function line_search($array,$tar) { if(!is_array($array) || count($array) < 1) return fals ...
 - iOS缓存到sandbox
			
在手机应用程序开发中,为了减少与服务端的交互次数,加快用户的响应速度,一般都会在iOS设备中加一个缓存的机制,前面一篇文章介绍了iOS设备的内存缓存,这篇文章将设计一个本地缓存的机制. 功能需 ...
 - Kafka生产者----向kafka写入数据
			
开发者可以使用kafka内置的客户端API开发kafka应用程序.除了内置的客户端之外,kafka还提供了二进制连接协议,也就是说,我们直接向kafka网络端口发送适当的字节序列,就可以实现从Kafk ...
 - 19Spring返回通知&异常通知&环绕通知
			
在前置通知和后置通知的基础上加上返回通知&异常通知&环绕通知 代码: package com.cn.spring.aop.impl; //加减乘除的接口类 public interfa ...
 - Analyzer原理
			
[常用分词器] SimpleAnalyzer StopAnalyzer WhitespaceAnalyzer StandardAnalyze [TokenStream] she is a studen ...
 - [luoguP2885] [USACO07NOV]电话线Telephone Wire(DP + 贪心)
			
传送门 真是诡异. 首先 O(n * 100 * 100) 三重循环 f[i][j] 表示到第 i 个柱子,高度是 j 的最小花费 f[i][j] = min(f[i - 1][k] + abs(k ...
 - poj 3667 Hotel (线段树的合并操作)
			
Hotel The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and enjoy a ...