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;

}

下一个动作按钮回调,改变索引

Layer* nextActionManagerAction()

{

sceneIdx++;

sceneIdx = sceneIdx % MAX_LAYER;

auto layer = createActionManagerLayer(sceneIdx);

layer->autorelease();

return layer;

}

上一个动作按钮回调,改变索引

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

时间: 2024-11-06 22:50:19

cocos2dx3.2 学习笔记(2)--ActionManagerTest的相关文章

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

系统环境: win7,python2.7 开发工具:vs2013 cocos版本:cocos2d-x-3.6 暂无模拟手机的环境 新建我的第一个cocos2d项目 1.打开cmd,cd到cocos2d根目录下 键入setup.py :这一步相当于在开发之前配置一下具体的开发环境.主要进行环境变量的设置和模拟器的设置 2.第一部完成之后,重新打开cmd,cd到要存放项目的目录下 键入cocos.py new MyGame -p com.boco.icocos -l cpp :在当前目录下使用c++

cocos2dx3.2学习笔记1&mdash;&mdash;环境搭建

    今年过年时就有想法要自己开发个游戏,后来看到了cocos2dx,就想学学,当时也找了一些资料.视频跟着学,可是当时没学过C++(就大二的时候考过试,勉强过的,当时都忘了),就自以为是地凭借自己java的功底开始学了...结果学得痛不欲生T_T....后来研一上课忙,也就渐渐不了了之了.现在自从7月中旬和实验室的同学们做了一个C++的项目后,从头学了C++的语法,还学了些MFC,用的VS2008,开始对C++有些了解了,决定重头学cocos2dx!(好吧,其实是刚迷上了一个手游--史上最牛

cocos2dx游戏开发学习笔记2-从helloworld开始

一.新建工程 具体安装和新建工程的方法在cocos2dx目录下的README.md文件中已经有详细说明,这里只做简单介绍. 1.上官网下载cocos2dx-3.0的源码,http://www.cocos2d-x.org/ 2.安装python2.7 3.运行setup.py安装 4.执行cocos new helloworld -p helloworld -l cpp,生成新工程 二.新建工程中包含的东西 -Classes AppDelegate.cpp      -----游戏真正开始执行的地

cocos2dx学习笔记(2)

昨天尝试了cocos2dx在win下的开发环境配置,并且运行了cocos的helloword程序,晚上想要尝试一下android开发环境配置,顺便学习cocos在eclipse下的JNI机制,按照cocoa中文论坛的android环境配置弄了NDK,并配置了环境变量,由于想要学习cocos的luabind机制(这个我们公司游戏的引擎用的很多,确实比较有兴趣),一切搞定不明就里的用eclipse导入了cocos3.0rc中的tests目录下的cpp-tests工程(这算android开发久了的毛病

cocos2dx游戏开发——微信打飞机学习笔记(一)——开发准备

一.环境的搭建 1.Windows开发准备: (1)软件下载及安装 •下载Cocos2d-x 最新版本:http://www.cocos2d-x.org/download 或者从Cocos2d-x GitHub主页中克隆Develop分支:https://github.com/cocos2d/cocos2d-x •配置Python 2.7 环境:http://www.python.org/download/releases/ •建议IDE:Visual Studio 2013 •运行cocos2

Cocos2dx学习笔记10:cocos2dx序列帧动画(1)

在cocos2dx里是不支持gif动画的,所以我们无法给精灵设置gif格式的图片.但是如果我们想实现动画效果呢?那么我们就要自己通过大量的静态图来组成播放成动画. 在cocos2dx里提供了序列帧动画的概念来实现这个功能,动画由帧组成,每一帧都是一个纹理,我们可以使用一个纹理序列来创建动画. 首先找一张动图的gif图,这里QQ群里最近动图的逗逼图太多,我就随便找了一张,把图片另存到桌面,打开ps软件,把图片拖进去,这样gif图会被拆分许多的图层.我们把图层一个一个图层的保存成png的静态图,命名

Cocos2dx学习笔记5:场景(Scene)

场景(Scene)是游戏的直接表现元素,游戏是由若干不同的场景构建而成.游戏里面的关卡切换,地图切换实际就是游戏场景的切换.而这所有的流程都是Director来控制. 在项目中打开AppDelegate.cpp文件. 引用头文件#include "HelloWorldScene.h" auto scene = HelloWorld::createScene();//调用HelloWorld::createScene()创建场景 director->runWithScene(sce

【Cocos2D-X 学习笔记】Cocos2D-x 3.0+VS开发环境搭建[使用Python]

上一节讲了如何用VS自带的项目管理器创建项目,该方法只适用于cocos2d-x 2.0版本,而cocos2d-x 3.0较之前版本在命名等方面有了较大更新,而cocos2d-x3.0不再支持用VS项目管理器自建项目,而是用Python脚本创建项目. 为什么做这种改变?经过上一节讨论可以发现,使用VS创建项目有一个缺陷:新建的项目必须在cocos2d-x的解决方案中,这样会导致自己的项目和Template项目混淆:如果想单独创建一个项目的话,又需要把cocos2d-x包中的cocos2d文件整个拷

Cocos2dx 3.1.1 学习笔记整理(1)

最近手痒了,不小心下载了cocos2dx 3.1.1,又搞了个VS2012,于是头脑发热的搞起 3.1.1了. 我是有多么的不专心啊. 已经把自己之前的学习内容从2.2.3迁移到了3.1.1,除了骨骼动画相关的之外. 简单记录一下过程: 1 安装与搭建 解压cocos2dx3.1.1版本,根目录下会有download-deps.py和setup.py, 预先用python分别对这两个文件跑一遍,有问题的话解决问题,没问题的话最好了. 2新建项目 跑完以上两个py文件之后,会自己将所有相关的系统环