Scene 场景。

是一个抽象的概念,仅被用作Node(节点)的一个子类.

Scene (场景)和Node(节点)几乎相同,不同的是Scene的默认锚点在屏幕的中心.

关于场景,不得不提的是场景之间的切换!效果挺炫的!下面看看33种切换效果,可以根据需要选择和扩展。

#ifndef __SceneTest__
#define __SceneTest__ #include "cocos2d.h"
USING_NS_CC;
class SceneTest : public Layer
{
public:
static Scene* createScene();
CREATE_FUNC(SceneTest);
virtual bool init();
bool onToucheBegans(Touch* touch,Event* ev);
}; class SceneConfig
{
public:
static SceneConfig* getInstance();
int getIndex();
void setIndex(int index);
std::string getBg();
protected:
private: }; #endif

SceneTest.h

#include "SceneTest.h"

static const char s_bg1[]="background1.png";
static const char s_bg2[]="HelloWorld.png";
#define str(name) #name
#define CL(classname) [](){auto scene = classname ::create(1.2f , SceneTest::createScene());log(str(classname));return scene;}
#define CLN(classname) [](){auto scene = classname ::create(1.2f , SceneTest::createScene(),false);log(str(classname));return scene;}
#define CLS(classname) [](){auto scene = classname ::create(1.2f , SceneTest::createScene(),ccc3(255, 0, 0));log(str(classname));return scene;}
#define CLM(classname) [](){auto scene = classname ::create(1.2f , SceneTest::createScene(),TransitionScene::Orientation::LEFT_OVER);log(str(classname));return scene;} static std::function<Scene*()> createFunctions[] = {
CL(TransitionJumpZoom),//作用: 创建一个跳动的过渡动画
CL(TransitionProgressRadialCCW), // 作用: 创建一个扇形条形式的过渡动画, 逆时针方向
CL(TransitionProgressRadialCW),// 作用: 创建一个扇形条形式的过渡动画, 顺时针方向
CL(TransitionProgressHorizontal),// 作用: 创建一个水平条形式的过渡动画
CL(TransitionProgressVertical),// 作用: 创建一个垂直条形式的过渡动画
CL(TransitionProgressInOut),// 作用: 创建一个由里向外扩展的过渡动画
CL(TransitionProgressOutIn),// 作用: 创建一个由外向里扩展的过渡动画
CL(TransitionCrossFade),// 作用:创建一个逐渐透明的过渡动画
CL(TransitionFadeTR),// 作用:创建一个部落格过渡动画, 从左下到右上
CL(TransitionFadeBL),// 作用:创建一个部落格过渡动画, 从右上到左下
CL(TransitionFadeUp),// 作用:创建一个从下到上,条形折叠的过渡动画
CL(TransitionFadeDown),// 作用:创建一个从上到下,条形折叠的过渡动画
CL(TransitionTurnOffTiles),// 作用:创建一个随机方格消失的过渡动画
CL(TransitionSplitRows),// 作用:创建一个分行划分切换的过渡动画
CL(TransitionSplitCols), // 作用:创建一个分列划分切换的过渡动画
CL(TransitionShrinkGrow),// 创建一个放缩交替的过渡动画
CL(TransitionRotoZoom),// 创建一个旋转放缩交替的过渡动画
CL(TransitionMoveInL),// 作用:创建一个从左边推入覆盖的过渡动画
CL(TransitionMoveInR),// 作用:创建一个从右边推入覆盖的过渡动画
CL(TransitionMoveInB),// 作用:创建一个从下边推入覆盖的过渡动画
CL(TransitionMoveInT),// 作用:创建一个从上边推入覆盖的过渡动画
CL(TransitionSlideInL),// 作用:创建一个从左侧推入并顶出旧场景的过渡动画
CL(TransitionSlideInR),// 作用:创建一个从右侧推入并顶出旧场景的过渡动画
CL(TransitionSlideInT), // 作用:创建一个从顶部推入并顶出旧场景的过渡动画
CL(TransitionSlideInB),// 作用:创建一个从下部推入并顶出旧场景的过渡动画
CLN(TransitionPageTurn),// 作用:创建一个翻页的过渡动画
CLS(TransitionFade),// 作用:创建一个逐渐过渡到目标颜色的切换动画
CLM(TransitionFlipX),// 作用:创建一个x轴反转的切换动画
CLM(TransitionFlipY),// 作用:创建一个Y轴反转的切换动画
CLM(TransitionFlipAngular),// 作用:创建一个带有反转角切换动画
CLM(TransitionZoomFlipX),// 作用:创建一个带有缩放的x轴反转切换的动画
CLM(TransitionZoomFlipY),// 作用:创建一个带有缩放的Y轴反转切换的动画
CLM(TransitionZoomFlipAngular)// 作用:创建一个带有缩放 ,反转角切换的动画
}; Scene* SceneTest::createScene()
{
auto scene = Scene::create();
auto layer = SceneTest::create();
scene->addChild(layer);
return scene;
} bool SceneTest::init()
{
auto sprite = Sprite::create(SceneConfig::getInstance()->getBg());
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
sprite->setPosition(Vec2(visibleSize.width/ + origin.x, visibleSize.height/ + origin.y));
this->addChild(sprite, );
auto eventListener = EventListenerTouchOneByOne::create();
eventListener->onTouchBegan = CC_CALLBACK_2(SceneTest::onToucheBegans,this);
this->_eventDispatcher->addEventListenerWithSceneGraphPriority(eventListener,this);
return true;
}
#define MAX_LAYER (sizeof(createFunctions) / sizeof(createFunctions[0]))
bool SceneTest::onToucheBegans(Touch* touch,Event* ev)
{
auto idx = SceneConfig::getInstance()->getIndex();
idx++;
idx = idx%MAX_LAYER;
SceneConfig::getInstance()->setIndex(idx);
auto reScene = createFunctions[idx]();
Director::getInstance()->setDepthTest(false);
Director::getInstance()->replaceScene(reScene);
return true;
} static SceneConfig* config;
static int _index;
SceneConfig* SceneConfig::getInstance()
{
if( !config )
{
config = new SceneConfig();
_index = ;
}
return config;
} int SceneConfig::getIndex()
{
return _index;
} void SceneConfig::setIndex(int index)
{
_index = index;
}
std::string SceneConfig::getBg()
{
auto index = _index;
if( index% > )
{
return s_bg1;
}
else
{
return s_bg2;
}
}

SceneTest.cpp

点击屏幕看看效果吧。

  CL(TransitionJumpZoom),//作用: 创建一个跳动的过渡动画
CL(TransitionProgressRadialCCW), // 作用: 创建一个扇形条形式的过渡动画, 逆时针方向
CL(TransitionProgressRadialCW),// 作用: 创建一个扇形条形式的过渡动画, 顺时针方向
CL(TransitionProgressHorizontal),// 作用: 创建一个水平条形式的过渡动画
CL(TransitionProgressVertical),// 作用: 创建一个垂直条形式的过渡动画
CL(TransitionProgressInOut),// 作用: 创建一个由里向外扩展的过渡动画
CL(TransitionProgressOutIn),// 作用: 创建一个由外向里扩展的过渡动画
CL(TransitionCrossFade),// 作用:创建一个逐渐透明的过渡动画
CL(TransitionFadeTR),// 作用:创建一个部落格过渡动画, 从左下到右上
CL(TransitionFadeBL),// 作用:创建一个部落格过渡动画, 从右上到左下
CL(TransitionFadeUp),// 作用:创建一个从下到上,条形折叠的过渡动画
CL(TransitionFadeDown),// 作用:创建一个从上到下,条形折叠的过渡动画
CL(TransitionTurnOffTiles),// 作用:创建一个随机方格消失的过渡动画
CL(TransitionSplitRows),// 作用:创建一个分行划分切换的过渡动画
CL(TransitionSplitCols), // 作用:创建一个分列划分切换的过渡动画
CL(TransitionShrinkGrow),// 创建一个放缩交替的过渡动画
CL(TransitionRotoZoom),// 创建一个旋转放缩交替的过渡动画
CL(TransitionMoveInL),// 作用:创建一个从左边推入覆盖的过渡动画
CL(TransitionMoveInR),// 作用:创建一个从右边推入覆盖的过渡动画
CL(TransitionMoveInB),// 作用:创建一个从下边推入覆盖的过渡动画
CL(TransitionMoveInT),// 作用:创建一个从上边推入覆盖的过渡动画
CL(TransitionSlideInL),// 作用:创建一个从左侧推入并顶出旧场景的过渡动画
CL(TransitionSlideInR),// 作用:创建一个从右侧推入并顶出旧场景的过渡动画
CL(TransitionSlideInT), // 作用:创建一个从顶部推入并顶出旧场景的过渡动画
CL(TransitionSlideInB),// 作用:创建一个从下部推入并顶出旧场景的过渡动画
CLN(TransitionPageTurn),// 作用:创建一个翻页的过渡动画
CLS(TransitionFade),// 作用:创建一个逐渐过渡到目标颜色的切换动画
CLM(TransitionFlipX),// 作用:创建一个x轴反转的切换动画
CLM(TransitionFlipY),// 作用:创建一个Y轴反转的切换动画
CLM(TransitionFlipAngular),// 作用:创建一个带有反转角切换动画
CLM(TransitionZoomFlipX),// 作用:创建一个带有缩放的x轴反转切换的动画
CLM(TransitionZoomFlipY),// 作用:创建一个带有缩放的Y轴反转切换的动画
CLM(TransitionZoomFlipAngular)// 作用:创建一个带有缩放 ,反转角切换的动画

Cocos2d-x 3.2 学习笔记(七)Scene And Transition的更多相关文章

  1. (转)Qt Model/View 学习笔记 (七)——Delegate类

    Qt Model/View 学习笔记 (七) Delegate  类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...

  2. Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  3. Typescript 学习笔记七:泛型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  4. python3.4学习笔记(七) 学习网站博客推荐

    python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...

  5. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  6. iOS 学习笔记七 【博爱手把手教你使用2016年gitHub Mac客户端】

    iOS 学习笔记七 [博爱手把手教你使用gitHub客户端] 第一步:首先下载git客户端 链接:https://desktop.github.com 第二步:fork 大神的代码[这里以我的代码为例 ...

  7. 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整

    今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...

  8. Linux学习笔记(七) 查询系统

    1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...

  9. go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer)

    目录 go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer) demo demo server demo client 池 dao service p2c ro ...

  10. Java IO学习笔记七:多路复用从单线程到多线程

    作者:Grey 原文地址:Java IO学习笔记七:多路复用从单线程到多线程 在前面提到的多路复用的服务端代码中, 我们在处理读数据的同时,也处理了写事件: public void readHandl ...

随机推荐

  1. Javac 手动编译时,出现乱码或编码格式问题

    使用Javac进行手动编译时,出现乱码或编码格式问题,原因如下:现象:编译时出现乱码或编译错误 即使改成UTF-8仍然会出错 原因如下:某些编辑器会往utf8文件中添加utf8标记(editplus称 ...

  2. 正则表达式统计java代码空白行,有效代码

    import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import jav ...

  3. centos 安装和配置 rabbitmq

    centos 安装 rabbitmq 1.rabbitmq是erlang语言开发的,安装前首先需要安装erlang# yum install erlang -y // 直接安装可能报错,# yum i ...

  4. Vue.js多重组件嵌套

    Vue.js多重组件嵌套 Vue.js中提供了非常棒的组件化思想,组件提高了代码的复用性.今天我们来实现一个形如 <app> <app-header></app-head ...

  5. UNET学习笔记2 - 高级API(HLAPI)

    高级API是在实时传输低级API基础上建立起来的,为多人游戏提供大量通用的组件.通过HLAPI开发者仅需少量的工作就可以搭建多人联网游戏. HLAPI 使用命名空间 UnityEngine.Netwo ...

  6. SQL入门经典(八) 之存储过程

    存储过程(stored procedure)有时候称为sproc,它是真正的脚本-或者更准确的说,他是批处理(batch)-它存储于数据库中,而不是淡出的文件中.无论如何,这个比较并不是很确定.存储过 ...

  7. Android Scroll分析——滑动效果产生

    相对于在Android2.x版本上出现的长按.点击事件的效果,不得不说,滑动操作具有更好的用户体验.因此,从Android 4.X版本开始,出现了更多滑动操作的效果.越来越多第三方应用模仿这样的效果, ...

  8. Linux计划任务crontab运行脚本不正确的问题

    问题的由来 写好的程序希望在崩溃之后能够自启动,于是利用linux的crontab功能,添加一个计划任务,每分钟执行一个脚本查看需要监控的进程是否还在,如果不在则启动之,否则不做任何事情.这么一个简单 ...

  9. 【C语言学习】《C Primer Plus》第3章 数据和C

    学习总结 1.C基本数据类型使用11个关键字:int.long.short.unsigned.char.float.double.signed._Bool._Complex和_Imaginary. 2 ...

  10. Web 架构师的能力(转)

    文/刘如鸿 最近和几个朋友在谈到时下流行的Web 2.0,也提到了其中最重要的角色——架构师.多方各有争执,不外乎是因为背景和视角的缘故,包括架构一词,本身就从建筑学借鉴而来,至于架构师,则可以 简单 ...