前面看完了 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的更多相关文章

  1. Cocos2d-x-3.6学习笔记第一天

    系统环境: win7,python2.7 开发工具:vs2013 cocos版本:cocos2d-x-3.6 暂无模拟手机的环境 新建我的第一个cocos2d项目 1.打开cmd,cd到cocos2d ...

  2. 【转】cocos2dx3.2学习笔记之Director(导演类)

    转载:https://blog.csdn.net/u013435551/article/details/38579747 在Cocos2d-x中,把统筹游戏大局的类抽象为导演类(Director),D ...

  3. 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 ...

  4. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  5. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  6. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  7. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  8. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  9. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

随机推荐

  1. 【Luogu】P4234最小差值生成树(LCT)

    题目链接 能把LCT打得每个函数都恰有一个错误也是挺令我惊讶的. 本题使用LCT维护生成树,具体做法是对原图中的每个边建一个点,然后连边的时候相当于是将边的起点跟“边”这个点连起来,边的终点也跟它连起 ...

  2. Eclipse + Apache Axis2 发布RESTful WebService(一)基础知识

    1.什么是WebService 学习 WebService 第一步:体系结构.三元素SOAP/WSDL/UDDI 2.什么是Axis2 Axis2是Apache一套崭新的WebService引擎(框架 ...

  3. C# 实现图像快速 水平 垂直 翻转

    C#  图像水平,垂直翻转的方法,速度很快 重新把图像绘制成翻转的方法 /// <summary> /// 图像水平翻转 /// </summary> /// <para ...

  4. APUE 学习笔记(十) 高级I/O

    1. Unix IPC(InterProcess Communication) 同一主机的各个进程间的IPC:管道.FIFO.消息队列.信号量.共享存储器 不同主机上的各个进程间IPC:socket套 ...

  5. Java-线索二叉树的实现

    概念性的东西,自行百度. 按照国际管理,直接上代码来分析. 1.Node节点类 package com.tree.thread; /** * Author: lihao * Date:2017/8/3 ...

  6. 【HDOJ6229】Wandering Robots(马尔科夫链,set)

    题意:给定一个n*n的地图,上面有k个障碍点不能走,有一个机器人从(0,0)出发,每次等概率的不动或者往上下左右没有障碍的地方走动,问走无限步后停在图的右下部的概率 n<=1e4,k<=1 ...

  7. 编写webconfig连接串与使用(新)

    原文发布时间为:2008-07-27 -- 来源于本人的百度文章 [由搬家工具导入] webconfig 中<appSettings/> 得后面代码添加如下: <appSetting ...

  8. 标准C程序设计七---50

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  9. linux 目标文件调试

    前言如果普通编程不需要了解这些东西,如果想精确控制你的对象文件的格式或者你想查看一下文件对象里的内容以便作出某种判断,刚你可以看一下下面的工具:objdump, nm, ar.当然,本文不可能非常详细 ...

  10. wpf LookUpEdit PopupContentTemplate

    <dxg:LookUpEdit Name="searchLookUpEdit" HorizontalAlignment="Stretch" PopupHe ...