cocos2dx3.2 学习笔记(2)--ActionManagerTest
前面看完了 CppTests的基本框架及流程。如今准备看看详细的每一个Test了
从哪里開始看呢。
额,就第一个吧(ActionManagerTest)
首先看看效果吧,执行了下。发现有几种效果。看不出什么名堂,感觉有点奇怪。
打开代码先看看头文件,发现原来不是一个类 ,是几个类都放在了这里,都是ActionManagerTest的 预计就是几种效果吧,方法也都没几个。不难发现,基本前面两个方法都一
样。仅仅有第三个方法不一样。
去cpp文件看看情况,先定义了一个枚举,不知道干嘛的,然后是声明了三个函数,看名字大概猜到是什么了。
直接贴代码打凝视好了
Layer* nextActionManagerAction(); --下一个动作
Layer* backActionManagerAction(); --上一个动作
Layer* restartActionManagerAction();--重置动作
static int sceneIdx = -1; 然后是定义了一个索引
#define MAX_LAYER 5 定义了最大层数
依据索引创建详细的layer
Layer* createActionManagerLayer(int nIndex)
{
//我学的时候直接在这里返回某个详细layer,一个个看究竟什么效果return new CrashTest();
switch(nIndex)
{
case 0: return new CrashTest();
case 1: return new LogicTest();
case 2: return new PauseTest();
case 3: return new StopActionTest();
case 4: return new ResumeTest();
}
return nullptr;
}
下一个动作button回调,改变索引
Layer* nextActionManagerAction()
{
sceneIdx++;
sceneIdx = sceneIdx % MAX_LAYER;
auto layer = createActionManagerLayer(sceneIdx);
layer->autorelease();
return layer;
}
上一个动作button回调,改变索引
Layer* backActionManagerAction()
{
sceneIdx--;
int total = MAX_LAYER;
if( sceneIdx < 0 )
sceneIdx += total;
auto layer = createActionManagerLayer(sceneIdx);
layer->autorelease();
return layer;
}
重置当前动作
Layer* restartActionManagerAction()
{
auto layer = createActionManagerLayer(sceneIdx);
layer->autorelease();
return layer;
}
相同。 我首先看到是第一个CrashTest();
auto child = Sprite::create(s_pathGrossini); //创建一张精灵
child->setPosition( VisibleRect::center() ); //设置到中间
addChild(child, 1);//加入到当前layer
//Sum of all action's duration is 1.5 second.
child->runAction(RotateBy::create(1.5f, 90)); //RotateBy这个函数从名字上能够了解到 是做旋转。(1.5秒内旋转90度)
child->runAction(Sequence::create( //Sequence这个函数一下子没看明确,英文意思是动作序列,那应该是一个个动作
DelayTime::create(1.4f), //先是一个等待动作1.4秒
FadeOut::create(1.1f), //1.1秒淡入
nullptr)
);
//After 1.5 second, self will be removed.
runAction( Sequence::create(
DelayTime::create(1.4f), //先是一个等待动作1.4秒
CallFunc::create( CC_CALLBACK_0(CrashTest::removeThis,this)),//运行一个回调
nullptr)
看代码我以为是 一张精灵旋转90度后,等待1.4秒 然后淡入。然后等待1.4秒。然后运行回调
结果事实并非这种,我把代码凝视掉 一个个动作运行。后来发现 三个runAction是一起运行的
也就是先1.5秒的旋转同一时候在1.4秒的等待,到了1.5秒的时候,应该买没旋转到90度,然后要运行淡入了。也发现要运行回调了,结果直接就运行到了回调
说明动作是同一时候运行的,而且会打断上一个动作。我认为演示样例代码能够把第三个runAction 的等待时间改成2.5秒 这样就能够看到一个完整过程了。第二个runAction,已经能够看出动作会别打断的效果了。
应该是我没看懂作者的原意。
就剩下个回调了removeThis
void CrashTest::removeThis()
{
_parent->removeChild(this, true); --把自己删除掉
nextCallback(this); --创建下一个layer
}
cocos2dx3.2 学习笔记(2)--ActionManagerTest的更多相关文章
- Cocos2d-x-3.6学习笔记第一天
系统环境: win7,python2.7 开发工具:vs2013 cocos版本:cocos2d-x-3.6 暂无模拟手机的环境 新建我的第一个cocos2d项目 1.打开cmd,cd到cocos2d ...
- 【转】cocos2dx3.2学习笔记之Director(导演类)
转载:https://blog.csdn.net/u013435551/article/details/38579747 在Cocos2d-x中,把统筹游戏大局的类抽象为导演类(Director),D ...
- cocos2d-x入门学习笔记,主要介绍cocos2d-x的基本结构,并且介绍引擎自带的示例
cocos2d-x 3.0 制作横版格斗游戏 http://philon.cn/post/cocos2d-x-3.0-zhi-zuo-heng-ban-ge-dou-you-xi http://blo ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
随机推荐
- 【THUWC2017】在美妙的数学王国中畅游(bzoj5020)
我数学是真的菜!! 清华光用数学知识就把我吊起来打,我还是太菜了 题解 如果每座城市的 $f$ 都是 $3$,维护一下树的路径上的 $\sum a,\space \sum b$ 即可. 其实就是维护一 ...
- inux读取ISO文件或是光驱的方法--挂载
inux读取ISO文件或是光驱的方法--挂载 首先在虚拟机选项的设置里设置CD/DVD选项,勾选:Connect at power on 再在连接中选择:Use ISO image file即选择镜像 ...
- 我要好offer之 网络大总结
1. TCP协议的状态机 TCP一共定义了11种状态,这些状态可以使用 netstat 命令查看 @左耳朵耗子 tcp系列教程: 上篇 下篇 2. TCP建立连接3次握手.释放连接4次握手 TCP包头 ...
- Mysql基本操作语句【重要】
一.对数据库的操作 1. 创建一个库 create database 库名 create database 库名 character set 编码
- JS函数(自调函数)与闭包【高级函数】
JavaScript:BOM(浏览器对象)+DOM(文档对象)+ECMAScript javascript面向对象: * 概述: * 发展: * 互联网发展对浏览器页面性能或效果要求越来越高,HTML ...
- XML布局文件于Java代码使用问题
2013-9-21 问题一.不同的XML文件中相同类型的控件id相同,那么将这些不同的布局xml组合在一个大的布局中,如何解决相同id问题 ? 解决办法: 不同的布局文件XML要组合成一个新的大布局, ...
- Python初见
参考资料:http://wenku.baidu.com/link?url=_akpT-G5Tvf7ECyszSipOAhHXzjlpYu-RWPcRTYp_tecPOollPGUxXG4MH69MLN ...
- ML | PCA
what's xxx PCA principal components analysis is for dimensionality reduction. 主要是通过对协方差矩阵Covariance ...
- SQLite的sqlite_sequence表
SQLite的sqlite_sequence表 sqlite_sequence表也是SQLite的系统表.该表用来保存其他表的RowID的最大值.数据库被创建时,sqlite_sequence表会 ...
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 2) Minimization dp
原题链接:http://codeforces.com/contest/572/problem/D 题意 给你个数组A和n,k,问你排列A后,下面的最小值是多少. 题解 先排个序,要填充像1,1+k,1 ...