cocos2d-x 4.0 学习之路(七)场景切换
场景切换
根据上一篇,我们建立了自己的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 学习之路(七)场景切换相关推荐
- [EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...
在完成了后,今天开始介绍企业库中的新模块:Cryptographer(加密模块),这个模块在日常的大多数项目的作用非常重要,例如:网站会员密码.身份证号.网站配置等,通过对信息进行加密可以保证项目数据 ...
- [EntLib]微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——上篇...
本文是为后面的学习之路做铺垫,简单介绍下企业库中的Validation模块的一些相关知识,包括Validation模块的简介.用途.使用方法.默认提供的多种验证器的介绍等. 一.简介及用途 在实际的项 ...
- (转)[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(1)...
原文地址:http://www.cnblogs.com/kyo-yo/archive/2010/11/01/Learning-EntLib-Tenth-Decoupling-Your-System-U ...
- [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART5——使用Unity自身的拦截器...
在前一篇文章中,介绍了如何使用Unity来接管PIAB进行拦截操作,而Unity自身也提供了类似于ICallHandler的拦截处理程序--IInterceptionBehavior,今天这篇文章就是 ...
- Extjs5.0 学习之路【资源篇】
磨刀不误砍柴工. 先收集资源,然后再开始学习之路. Extjs5.0 文件下载 API-5.0 API离线包 http://cdn.sencha.com/downloads/docs/ext-docs ...
- OpenGL ES 2.0学习之路---2.Hello Triangel:一个OpenGL ES 2.0例子
该例子主要包括以下内容: 使用EGL创造一个显示渲染窗口平面 装载顶点和片段着色器 创造一个项目,联系顶点和片段着色器,链接项目 设置视窗 清除颜色缓冲区 最基本的渲染 在EGL窗口显示颜色缓冲区的内 ...
- 【python3的学习之路七】函数
返回多个值 import mathdef move(x, y, step, angle=0):nx = x + step * math.cos(angle)ny = y - step * math.s ...
- 微软企业库5.0 学习之路——UnityPIAB 通过配置实现AOP
完全通过配置实现AOP的资料太少了,今天忙了好几个小时终于走通了,分享一下. 模拟业务是:登陆,记录登陆日志. // 业务接口 public interface IStudentManage{bool ...
- Vue.js 3.0 学习笔记(七)class与style绑定
一.绑定HTML样式(class) 1.数组语法 <!DOCTYPE html> <html> <head><meta charset="UTF-8 ...
最新文章
- 无源码动态调试APK
- 39 网络相关函数(七)——live555源码阅读(四)网络
- HTML5原生拖拽/拖放(drag drop)详解
- 虚拟地址空间及内存管理方式
- android倒计时的正确释放,Android 计时器和handler的正确使用方式
- Centos5.5服务器ROOT密码破解
- linux下fish配置终端,如何在Linux中安装、配置和使用Fish Shell?
- 微信公众号教程(13)公司通讯录开发 上
- c语言专业面试问题,c语言面试问题(共3篇).doc
- android webview 跳转到浏览器,Android WebView或手机浏览器打开连接问题解决办法总结...
- 网卡offload功能介绍
- 程序员掉入传销组织用“代码”求救,同事秒懂
- 【POJ3281】Dining 网络流
- 计算机联锁控制台功能,计算机联锁控制台的改进及应用
- Qsetting本地缓存PC端数据
- 关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM
- HDR电视显示技术概况及标准发展前景汇总
- 【微信小程序】微信小程序开发学习记录
- android 9.0rom下载,安卓9.0刷机包
- 如何系统的学习数据库、形成自己的数据库体系、数据库快速入门