场景切换

根据上一篇,我们建立了自己的MyHelloWorldScene。那么如何从HelloWorldScene切换到MyHelloWorldScene呢?

其实很简单。我们要切换场景,那么得有一个触发点,我们就用HelloWorld右下角的关闭按钮来实现吧。

我们要做的是,按下关闭按钮,不是关闭窗口而是切换到MyHelloWorldScene。那么我们看一下HelloWorldScene.cpp的menuCloseCallback()函数吧。把关闭处理去掉,加上一句话就可以了。(注意:别忘了加MyHelloWorldScene.h头文件)

void HelloWorld::menuCloseCallback(Ref* sender)
{//Director::getInstance()->end();Director::getInstance()->replaceScene(MyHelloWorld::createScene());
}

大家看到了,我把MyHelloWorld里面的Label文字和图片都改了,这样看着能清晰一些。

特殊效果

这么直接的变换有点太土了,如何增加一些变换效果呢。Cocos2dx已经为我们准备好函数了,只需要变成下面的代码就OK了。

void HelloWorld::menuCloseCallback(Ref* sender)
{//Director::getInstance()->end();Director::getInstance()->replaceScene(TransitionSlideInT::create(2.0f, MyHelloWorld::createScene()));
}

看一下效果,是不是有初步大片的感觉了。

TransitionSlideInT也是一个场景类,它通过Create函数就创建出这种带有滑动效果的场景。

它有两个参数,

float f:场景切换的时间,秒

Scene* scene:你要切换的目标场景

Cocos2dx不只提供了这一种特效,还有其他很多,

比如:TransitionJumpZoom:原场景缩小弹出,新场景放大弹入。

再有TransitionFadeUp:从下到上的百叶窗效果:

其他的不多举例了,大家可以查官方API。那些Transition开头的都是切换场景。

场景的推进和弹出

用replaceScene切换场景,新场景显示出来后,旧的场景资源会被释放。这是非常必要的,因为一个场景有时候会很大,所以切换场景后必须释放旧场景的资源。

那么有些时候,我们不希望旧场景被释放,想新旧场景来回切换,这个就用到了场景的推进和弹出。

把replaceScene换成pushScene:

// HelloWorldScene.cpp
void HelloWorld::menuCloseCallback(Ref* sender)
{//Director::getInstance()->end();Director::getInstance()->pushScene(TransitionSplitCols::create(2.0f, MyHelloWorld::createScene()));
}

然后在MyHelloWorldScene里,做下面的修改:

// MyHelloWorldScene.h
void backToScene(Ref* sender);// MyHelloWorldScene.cppauto closeItem = MenuItemImage::create("CloseNormal.png","CloseSelected.png",CC_CALLBACK_1(MyHelloWorld::backToScene, this));void MyHelloWorld::backToScene(Ref* sender)
{Director::getInstance()->popScene();
}

popScene和pushScene函数是对应关系。用popScene()函数就可以回到原来的场景了,MyHelloWorld的场景资源会被释放。

cocos2d-x 4.0 学习之路(七)场景切换相关推荐

  1. [EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...

    在完成了后,今天开始介绍企业库中的新模块:Cryptographer(加密模块),这个模块在日常的大多数项目的作用非常重要,例如:网站会员密码.身份证号.网站配置等,通过对信息进行加密可以保证项目数据 ...

  2. [EntLib]微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——上篇...

    本文是为后面的学习之路做铺垫,简单介绍下企业库中的Validation模块的一些相关知识,包括Validation模块的简介.用途.使用方法.默认提供的多种验证器的介绍等. 一.简介及用途 在实际的项 ...

  3. (转)[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(1)...

    原文地址:http://www.cnblogs.com/kyo-yo/archive/2010/11/01/Learning-EntLib-Tenth-Decoupling-Your-System-U ...

  4. [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART5——使用Unity自身的拦截器...

    在前一篇文章中,介绍了如何使用Unity来接管PIAB进行拦截操作,而Unity自身也提供了类似于ICallHandler的拦截处理程序--IInterceptionBehavior,今天这篇文章就是 ...

  5. Extjs5.0 学习之路【资源篇】

    磨刀不误砍柴工. 先收集资源,然后再开始学习之路. Extjs5.0 文件下载 API-5.0 API离线包 http://cdn.sencha.com/downloads/docs/ext-docs ...

  6. OpenGL ES 2.0学习之路---2.Hello Triangel:一个OpenGL ES 2.0例子

    该例子主要包括以下内容: 使用EGL创造一个显示渲染窗口平面 装载顶点和片段着色器 创造一个项目,联系顶点和片段着色器,链接项目 设置视窗 清除颜色缓冲区 最基本的渲染 在EGL窗口显示颜色缓冲区的内 ...

  7. 【python3的学习之路七】函数

    返回多个值 import mathdef move(x, y, step, angle=0):nx = x + step * math.cos(angle)ny = y - step * math.s ...

  8. 微软企业库5.0 学习之路——UnityPIAB 通过配置实现AOP

    完全通过配置实现AOP的资料太少了,今天忙了好几个小时终于走通了,分享一下. 模拟业务是:登陆,记录登陆日志. // 业务接口 public interface IStudentManage{bool ...

  9. Vue.js 3.0 学习笔记(七)class与style绑定

    一.绑定HTML样式(class) 1.数组语法 <!DOCTYPE html> <html> <head><meta charset="UTF-8 ...

最新文章

  1. 无源码动态调试APK
  2. 39 网络相关函数(七)——live555源码阅读(四)网络
  3. HTML5原生拖拽/拖放(drag drop)详解
  4. 虚拟地址空间及内存管理方式
  5. android倒计时的正确释放,Android 计时器和handler的正确使用方式
  6. Centos5.5服务器ROOT密码破解
  7. linux下fish配置终端,如何在Linux中安装、配置和使用Fish Shell?
  8. 微信公众号教程(13)公司通讯录开发 上
  9. c语言专业面试问题,c语言面试问题(共3篇).doc
  10. android webview 跳转到浏览器,Android WebView或手机浏览器打开连接问题解决办法总结...
  11. 网卡offload功能介绍
  12. 程序员掉入传销组织用“代码”求救,同事秒懂
  13. 【POJ3281】Dining 网络流
  14. 计算机联锁控制台功能,计算机联锁控制台的改进及应用
  15. Qsetting本地缓存PC端数据
  16. 关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM
  17. HDR电视显示技术概况及标准发展前景汇总
  18. 【微信小程序】微信小程序开发学习记录
  19. android 9.0rom下载,安卓9.0刷机包
  20. 如何系统的学习数据库、形成自己的数据库体系、数据库快速入门

热门文章

  1. SSH公钥秘钥git
  2. 高斯列主元消去法解线性方程组
  3. Flutter 图片组件Image、本地图片、远程图片、图片剪切、圆形图片
  4. python 数据分析教程推荐_太香了!墙裂推荐6个Python数据分析神器!!
  5. 百度地图 开启 绘制 功能(画圆)
  6. uni-app 数据上拉加载更多功能
  7. 安卓studio 添加后台bgm音乐的几种方法
  8. 思齐什么意思_思齐的寓意
  9. 方差分析ANOVA:理论、推导与R语言实现
  10. ipad上编程方法,服务器安装vscode