cocos2dx基础篇(26)——场景切换CCTransitionScene

【唠叨】

游戏中两个场景的切换时经常要被用到的,cocos2dx引擎为我们提供了许多场景切换的动画,我感觉有些和PPT的切换很类似,所以感觉很熟悉。如:淡入淡出、翻页、跳入跳出等等。

本节要讲的场景切换方式十分丰富,不过内容比较简单,很容易掌握。

【致谢】

http://gl.paea.cn/contents/d4d676f371519df4.html



【场景管理】

在讲场景切换CCTransitionScene之前,先来复习一下场景CCScene的管理。

游戏运行的过程中,每次只能运行一个场景,所以要切换到其他场景的话,需要对场景进行相应的管理。而对场景的管理则是由导演类CCDirector来进行操作的。

1、使用方法

//
	//获取一个单例对象
	CCDirector::sharedDirector()->replaceScene(newScene);
//

2、场景管理操作

//
	void runWithScene(CCScene *pScene);  //进入AppDelegate主循环运行的场景,仅在运行第一个场景时调用

	void pushScene(CCScene *pScene);     //暂停当前场景,push到场景堆栈,运行新场景

	void popScene();                     //从场景堆栈中pop场景,删除当前场景(不入栈)
	void popToRootScene();               //从场景堆栈中pop出所有场景,栈底场景替换当前场景,删除当前场景(不入栈)
	 
	void replaceScene(CCScene *pScene);  //场景替换,删除当前场景(不入栈)
	 
	void pause();                        //暂停当前场景
	void resume();                       //恢复被暂停的当前场景
	void end();                          //终止执行,释放运行中的场景
//


【CCTransitionScene】

CCTransitionScene继承于CCScene,主要用于处理场景之间切换动画的管理。而我们主要关注的是它派生出来个各类场景切换动画效果的子类,及这些子类的使用方法。

由场景管理可知,场景切换有关的函数操作有两个:pushScenereplaceScene

故可以在使用这两个函数进行场景切换时,加入场景切换动画效果,增加游戏的美感。

1、常用的场景切换类

//
//慢慢淡化到另一场景
	CCTransitionCrossFade::create(时间,目标场景);

//变暗消失后,另一场景慢慢出现
	CCTransitionFade::create(时间,目标场景);

//翻页,true为向前翻页
	CCTransitionPageTurn::create(时间,目标场景,bool); 

//变小跳动消失后,另一场景跳动变大出现
	CCTransitionJumpZoom::create(时间,目标场景);

//旋转变小消失后,另一场景旋转变大出现
	CCTransitionRotoZoom::create(时间,目标场景);

//变小消失,同时另一场景变大出现
	CCTransitionShrinkGrow::create(时间,目标场景);

//剥落场景,呈现出另一个场景
	CCTransitionFadeBL::create(时间,目标场景);   //右上到左下方块消失
	CCTransitionFadeDown::create(时间,目标场景); //上到下横条消失
	CCTransitionFadeTR::create(时间,目标场景);   //左下到右上方块消失
	CCTransitionFadeUp::create(时间,目标场景);   //从下到上横条消失

//卡牌翻转
	//样式(可以不写):
	//1: kCCTransitionOrientationLeftOver  (左向右翻转)
	//2: kCCTransitionOrientationRightOver (右向左翻转)
	//3: kCCTransitionOrientationUpOver    (下向上翻转)
	//4: kCCTransitionOrientationDownOver  (上向下翻转)
	CCTransitionFlipAngular::create(时间,目标场景,样式12);     //翻转
	CCTransitionFlipX::create(时间,目标场景,样式12);           //X轴翻转
	CCTransitionFlipY::create(时间,目标场景,样式34);           //Y轴翻转

	CCTransitionZoomFlipAngular::create(时间,目标场景,样式12); //翻转   ,区别是附带回拉效果
	CCTransitionZoomFlipX::create(时间,目标场景,样式12);       //X轴翻转,区别是附带回拉效果
	CCTransitionZoomFlipY::create(时间,目标场景,样式34);       //Y轴翻转,区别是附带回拉效果

//卡牌(另一场景)叠放,插放在场景上面
	CCTransitionMoveInB::create(时间,目标场景); //整体从下面插入
	CCTransitionMoveInL::create(时间,目标场景); //整体从左面插入
	CCTransitionMoveInT::create(时间,目标场景); //整体从上面插入
	CCTransitionMoveInR::create(时间,目标场景); //整体从右面插入

//刷墙,矩形。(另一个场景像刷墙一样刷出来)
	CCTransitionProgressHorizontal::create(时间,目标场景); //从左到右
	CCTransitionProgressVertical::create(时间,目标场景);   //从上到下
	CCTransitionProgressInOut::create(时间,目标场景);      //从中间到四周
	CCTransitionProgressOutIn::create(时间,目标场景);      //从四周到中间

//刷墙,扇形。(另一个场景像刷墙一样刷出来)
	CCTransitionProgressRadialCCW::create(时间,目标场景);  //逆时针
	CCTransitionProgressRadialCW::create(时间,目标场景);   //顺时针

//刷墙,分成很多小块。(一小块一小块的随机刷上去)
	CCTransitionTurnOffTiles::create(时间,目标场景);

//滑动,滑出窗口。另一场景滑入窗口
	CCTransitionSlideInB::create(时间,目标场景);  //向上滑动
	CCTransitionSlideInL::create(时间,目标场景);  //向右滑动
	CCTransitionSlideInR::create(时间,目标场景);  //向左滑动
	CCTransitionSlideInT::create(时间,目标场景);  //向下滑动

//场景分裂成三块矩形,抽走消失。另一场景也成三块插入出现
	CCTransitionSplitCols::create(时间,目标场景); //中间块向上,左右块向下抽出
	CCTransitionSplitRows::create(时间,目标场景); //中间块向右,上下块向左抽出
//

2、使用方法

//
//创建场景HelloWorld场景
	CCScene* scene = HelloWorld::scene();
//创建场景切换方式
	CCTransitionScene* ts = CCTransitionJumpZoom::create(2, scene);
//切换场景
	CCDirector::sharedDirector()->replaceScene(ts);
//


【代码实战】

请参考官方给出的TestCpp项目中相关知识来学习,里面讲的很详细。

时间: 2024-10-14 04:30:46

cocos2dx基础篇(26)——场景切换CCTransitionScene的相关文章

cocos2dx基础篇(5)——浅析几个常见类

目录 入口类main.cpp 主要控制类AppDelegate.cpp 节点类CCNode 导演类CCDirector 场景类CCScene 层次类CCLayer 精灵类CCSprite 大小类CCSize 坐标CCPoint 矩形类CCRect 数组类CCArray 入口类main.cpp 这是应用程序的入口类,用于创建cocos2dx的AppDelegate实例.窗口大小.以及运行程序. 主要代码如下:     // create the application instance     A

cocos2dx基础篇(12)——点九图CCScale9Sprite

[引言] 本来是想学学控件类CCControl的另一个子类按钮控件CCControlButton的.但是发现里面有一个参数牵扯到CCScale9Sprite这个类.看到CCScale9Sprite,很容易联想到精灵类CCSprite.两者又有什么区别呢?因此我就去网上收了一些有关CCScale9Sprite的资料来学习. [参考文献] [1] http://blog.csdn.net/nynyvkhhiiii/article/details/12782249 [2] http://www.cnb

cocos2dx基础篇(7)——菜单按钮CCMenu、CCMenuItem

[本节内容] 菜单按钮在游戏中是经常被用到的,比如主菜单界面的菜单选项,暂停游戏时的菜单选项等等.cocos2dx引擎同样为我们提供了CCMenu菜单的功能,并包含了一些简单的菜单项CCMenuItem.且菜单项附带触碰按钮时,自动放大的效果. 温馨提示:本节内容比较多,需要大家慢慢分析,不要急于求成. 本节组织结构如下: 一.介绍CCMenu. 二.介绍CCMenuItem,及其具体的六个子类. 三.代码实战. [一.菜单CCMenu] 菜单CCMenu是专门用来承载菜单按钮的CCLayer图

Cocos2dx 学习笔记整理----场景切换

据说Cocos2dx场景切换的方法有32种:cocos2dx 常见的32种切换场景的动画 无需一一求证,只需要知道切换场景需要怎么做就行了. 作为导演CCDirector,切换场景的事情当然归它管了. 切换场景的接口如下: ? 1 CCDirector::sharedDirector()->replaceScene(cocos2d:CCScene * pScene); 所以,我们只要把需要切换的场景实例传进去就可以了. ? 1 2 CCScene * pScene = GameMain::sce

cocos2dx基础篇(13)——按钮控件CCControlButton

[引言] 按钮类CCControlButton继承于控件类CCControl. 控件类CCControl主要向子类提供了一系列的控件触发事件.当子控件触发相关的事件后,就会执行相关的控件事件回调函数.这与之前讲的CCMenu中的菜单按钮回调是类似的. 控件类CCControl主要有三个子类: (1)开关控件CCControlSwitch (2)滑块控件CCControlSlider (3)按钮控件CCControlButton 本节讲的是其子类其中之一:按钮类CCControlButton. [

cocos2dx基础篇(4)——浅析cocos2dx引擎目录

通过前面几节的学习,相信大家都已经配置好了VS+cocos2dx2.2.3的环境,并且成功运行了官方的案例HelloWorld. 一.窥探文件目录 要想学好cocos2dx,首先就需要对引擎目录下的各个文件有所了解.接下来,就让我们先来分析一下cocos2dx2.2.3引擎的文件目录吧. 从目录中我们主要了解一下一下几个文件: cocos2dx:cocos2d-x引擎的核心部分,存放了引擎的大部分源文件. CocosDenshion:声音模块相关源文件. Debug.win32:在Windows

cocos2dx基础篇(10)——开关按钮CCControlSwitch

[本节内容] 开关类CCControlSwitch继承于控件类CCControl. 控件类CCControl主要向子类提供了一系列的控件触发事件.当子控件触发相关的事件后,就会执行相关的控件事件回调函数.这与之前讲的CCMenu中的菜单按钮回调是类似的. 控件类CCControl主要有三个子类: (1)开关控件CCControlSwitch (2)滑块控件CCControlSlider (3)按钮控件CCControlButton 本节讲的是其子类其中之一:开关类CCControlSwitch.

cocos2dx基础篇(8)——定时器更新schedule、update

[本节内容] 定时器在大部分游戏中是不可或缺的,即每隔一段时间,就要执行相应的刷新体函数,以更新游戏的画面.时间.进度.敌人的指令等等. cocos2dx为我们提供了定时器schedule相关的操作.其操作函数的定义在CCNode中,所以基本上大多数的引擎类都可以设置定时器,如CCLayer.CCSprite.CCMenu等. 定时器更新的方式分为三类: (1)默认定时器:scheduleUpdate(); (2)自定义定时器:schedule(); (3)一次性定时器:scheduleOnce

Cocos2d-x Lua中多场景切换生命周期

在多个场景切换时候,场景的生命周期会更加复杂.这一节我们介绍一下场景切换生命周期.多个场景切换时候分为几种情况:情况1,使用pushScene函数从实现GameScene场景进入SettingScene场景.情况2,使用replaceScene函数实现从GameScene场景进入SettingScene场景.情况3,使用popScene函数从实现SettingScene场景回到GameScene场景.我们参考GameScene重写SettingScene的中几个生命周期函数,代码如下: [htm