原文:Learning Cocos2d-x for WP8(6)——场景切换和场景过渡效果

C#(wp7)兄弟篇 Learning Cocos2d-x for XNA(6)——场景切换和场景过渡效果

工程文件:SceneTransitionTest.hSceneTransitionTestc.cpp

开始菜单

添加背景和菜单按钮素材至Assets中

SceneTransitionTest.h

在SceneTransitionTest.h中添加两个Class(SceneTransitionTestScene和SceneTransitionTestLayer)分别用于Scene和Layer。

核心代码

 class SceneTransitionTestScene:public CCScene
{
public:
SceneTransitionTestScene();
~SceneTransitionTestScene(); virtual void onEnter();
}; class SceneTransitionTestLayer:public CCLayer
{
public:
SceneTransitionTestLayer();
~SceneTransitionTestLayer(); void btnStartClickCallback(CCObject* pSender);//开始按钮
void btnSettingClickCallback(CCObject* pSender);//设置按钮
void btnRecordClickCallback(CCObject* pSender);//纪录按钮
void btnHelpClickCallback(CCObject* pSender);//帮助按钮
};

SceneTransitionTest.cpp

SceneTransitionTestScene::onEnter()中主要添加Layer值Scene中

SceneTransitionTestLayer::SceneTransitionTestLayer()中实现背景、菜单按钮的添加。

核心代码

SceneTransitionTest.cpp

 //------------------------------------
//
//SceneTransitionTestLayer
//
//------------------------------------
SceneTransitionTestLayer::SceneTransitionTestLayer()
{
CCDirector::sharedDirector()->setDeviceOrientation(ccDeviceOrientation::kCCDeviceOrientationPortrait);//设置朝向,竖屏
//背景
CCSprite* pBackground=CCSprite::spriteWithFile("img_background.png");
pBackground->setAnchorPoint(ccp(,)); //设置锚点在图片右上角
pBackground->setPosition(ccp(,));
this->addChild(pBackground,-); //菜单按钮
char strBtnMenuItemSprite[]="btn_Menu.png";
CCSprite* btnStartNormal=CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnStartSelected=CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnSettingNormal =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnSettingSelected =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnRecordNormal =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnRecordSelected =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnHelpNormal =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnHelpSelected =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,)); CCMenuItemSprite* btnStart=CCMenuItemSprite::itemFromNormalSprite(btnStartNormal,btnStartSelected,this,menu_selector(SceneTransitionTestLayer::btnStartClickCallback));
CCMenuItemSprite* btnSetting=CCMenuItemSprite::itemFromNormalSprite(btnSettingNormal,btnSettingSelected,this,menu_selector(SceneTransitionTestLayer::btnSettingClickCallback));
CCMenuItemSprite* btnRecord=CCMenuItemSprite::itemFromNormalSprite(btnRecordNormal,btnRecordSelected,this,menu_selector(SceneTransitionTestLayer::btnRecordClickCallback));
CCMenuItemSprite* btnHelp=CCMenuItemSprite::itemFromNormalSprite(btnHelpNormal,btnHelpSelected,this,menu_selector(SceneTransitionTestLayer::btnHelpClickCallback)); CCMenu* menu=CCMenu::menuWithItems(btnStart,btnSetting,btnRecord,btnHelp,NULL);
menu->alignItemsVertically();
this->addChild(menu,);
} SceneTransitionTestLayer::~SceneTransitionTestLayer()
{} void SceneTransitionTestLayer::btnStartClickCallback(CCObject* sender)
{} void SceneTransitionTestLayer::btnSettingClickCallback(CCObject* sender)
{} void SceneTransitionTestLayer::btnRecordClickCallback(CCObject* sender)
{} void SceneTransitionTestLayer::btnHelpClickCallback(CCObject* sender)
{} //------------------------------------
//
//SceneTransitionTestScene
//
//------------------------------------
SceneTransitionTestScene::SceneTransitionTestScene()
{} SceneTransitionTestScene::~SceneTransitionTestScene()
{} void SceneTransitionTestScene::onEnter()
{
CCScene::onEnter();
CCLayer* pStartPageLayer=new SceneTransitionTestLayer();
this->addChild(pStartPageLayer);
pStartPageLayer->release();
}

此部分代码实现主要实现Menu菜单
运行显示效果

设置屏幕朝向deviceOrientation

默认下是横屏显示,该属性有四个值

kCCDeviceOrientationLandscapeLeft  始终朝向设备左侧

kCCDeviceOrientationLandscapeRight  始终朝向设备右侧

kCCDeviceOrientationPortraitkCCDeviceOrientationPortraitUpsideDown  始终朝向设备下侧

现在我们要它竖屏显示

CCDirector::sharedDirector()->setDeviceOrientation(ccDeviceOrientation::kCCDeviceOrientationPortrait);//设置朝向,竖屏

设置背景图

我们用CCSprite实现,其中涉及到anchorPoint(锚点),简单的讲,默认下,cocos2d-x识别图片的position是以图片的中心为基准的,这点为锚点,我们可以设置锚点的位置,符合我们的需求。

    pBackground->setAnchorPoint(ccp(,));//设置锚点在图片右上角
pBackground->setPosition(ccp(,));

当然,你也可以不修改anchorPoint,默认锚点(图片中心),实现图片位置。

addChild方法,使用了addChild(CCNode child, int zOrder)

其中zOrder为坐标轴的Z方向。其目的是同层中显示的顺序(遮挡)。

cocos2d提供的访问顺序是Z-Order为负值的子节点->自身节点->Z-Order为正值的子节点。

“设置”页面

SceneTransitionTest.h

同样在SceneTransitionTest.h中添加两类(SettingScene和SettingLayer)用于Scene和Layer。

核心代码

 //-----------------------------------------
//
//SettingScene
//
//-----------------------------------------
class SettingScene:public CCScene
{
public:
SettingScene();
~SettingScene(); virtual void onEnter();
}; class SettingLayer:public CCLayer
{
public:
SettingLayer();
~SettingLayer(); public:
void MenuItemSoundCallback(CCObject* pSender);//音效Toggle
void MenuItemBackgroundCallback(CCObject* pSender);//背景Toggle
void BtnGoBackCallback(CCObject* pSender);//返回按钮
};

SceneTransitionTest.cpp

SettingScene::onEnter()中实现Layer加载至Scene

SettingLayer::SettingLayer()实现界面背景和菜单的设置

核心代码

”设置“页面

 //------------------------------------
//
//SettingLayer
//
//------------------------------------ SettingLayer::SettingLayer()
{
//背景
CCSprite* pBackground=CCSprite::spriteWithFile("img_background.png");
pBackground->setAnchorPoint(ccp(,)); //设置锚点在图片右上角
pBackground->setPosition(ccp(,));
this->addChild(pBackground,-); //菜单
CCMenuItemLabel* pMenuItemSoundTitle=CCMenuItemLabel::itemWithLabel(CCLabelBMFont::labelWithString("音效","fonts/YaHeiChinese.fnt"));
pMenuItemSoundTitle->setScale(2.0f);//放大2.0倍
pMenuItemSoundTitle->setIsEnabled(false);
pMenuItemSoundTitle->setColor(ccc3(,,));//字体颜色
CCMenuItemToggle* pMenuItemSound=CCMenuItemToggle::itemWithTarget(this,
menu_selector(SettingLayer::MenuItemSoundCallback),
CCMenuItemFont::itemFromString("On"),
CCMenuItemFont::itemFromString("Off"),
NULL);
CCMenuItemLabel* pMenuItemBackgroundTitle=CCMenuItemLabel::itemWithLabel(CCLabelBMFont::labelWithString("背景","fonts/YaHeiChinese.fnt"));
pMenuItemBackgroundTitle->setScale(2.0f);//放大2.0倍
pMenuItemBackgroundTitle->setIsEnabled(false);
pMenuItemBackgroundTitle->setColor(ccc3(,,));//字体颜色
CCMenuItemToggle* pMenuItemBackground=CCMenuItemToggle::itemWithTarget(this,
menu_selector(SettingLayer::MenuItemBackgroundCallback),
CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithFile("bg_Sea1Mini.png"),CCSprite::spriteWithFile("bg_Sea1Mini.png")),
CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithFile("bg_Sea2Mini.jpg"),CCSprite::spriteWithFile("bg_Sea2Mini.jpg")),
NULL); CCMenu* menu=CCMenu::menuWithItems(pMenuItemSoundTitle,pMenuItemSound,pMenuItemBackgroundTitle,pMenuItemBackground,NULL);
menu->alignItemsVerticallyWithPadding();
this->addChild(menu,); //返回按钮
CCSize s=CCDirector::sharedDirector()->getWinSize();
CCLabelTTF* pGoBack=CCLabelTTF::labelWithString("Go Back","fonts/YaHeiChinese.fnt",);
pGoBack->setColor(ccc3(,,));
CCMenuItemLabel* btnGoBack=CCMenuItemLabel::itemWithLabel(pGoBack,this,menu_selector(SettingLayer::BtnGoBackCallback));
CCMenu* menuGoBack=CCMenu::menuWithItem(btnGoBack);
menuGoBack->setPosition(s.width/,);
this->addChild(menuGoBack);
} SettingLayer::~SettingLayer()
{} void SettingLayer::MenuItemSoundCallback(CCObject* sender)
{} void SettingLayer::MenuItemBackgroundCallback(CCObject* sender)
{} void SettingLayer::BtnGoBackCallback(CCObject* sender)
{} //------------------------------------
//
//SettingScene
//
//------------------------------------ SettingScene::SettingScene()
{} SettingScene::~SettingScene()
{} void SettingScene::onEnter()
{
CCScene::onEnter();
CCLayer* pLayer=new SettingLayer();
this->addChild(pLayer);
pLayer->release();
}

运行显示效果

场景切换

CCDirector中的三个方法

void CCDirector::pushScene(CCScene *pScene)

终止正在运行的场景,把它放到暂停场景的堆栈(内存)中去,新的场景将被执行。由于将场景放置内存中,场景并没有release。

void CCDirector::popScene(void)

将经过pushScene的场景从堆栈(内存)中pop出来执行(前提是堆栈内存中存在场景)。

void CCDirector::replaceScene(CCScene *pScene)

用一个新的场景去替换掉正在运行的场景,正在运行的场景将被终止。

开始菜单“设置”按钮添加事件处理,pushScene切换场景(页面)。

void SceneTransitionTestLayer::btnSettingClickCallback(CCObject* sender)
{
CCScene* pSettingScene=new SettingScene();
CCDirector::sharedDirector()->pushScene(pSettingScene);
}

“设置”页面返回添加事件处理,popScene切换场景(页面)。

void SettingLayer::BtnGoBackCallback(CCObject* sender)
{
CCDirector::sharedDirector()->popScene();
}

执行,点击“设置”,会跳转到“设置”页面,同样再点击“返回”按钮时,可实现返回之前的页面(场景)。

同样,你可在replaceScene实现同样的效果。

场景切换特效

CCTransitionFade, //渐隐效果

CCTransitionFadeTR, //碎片效果
CCTransitionJumpZoom, //跳动效果
CCTransitionMoveInL, //从左向右移动
CCTransitionPageTurn, //翻页效果
CCTransitionRadialCCW, //钟摆效果
CCTransitionRotoZoom,//涡轮效果
CCTransitionSceneOriented,//
CCTransitionShrinkGrow, //渐远效果
CCTransitionSlideInL, //左移
CCTransitionSplitCols,//上下移动
CCTransitionTurnOffTiles//
CCTransitionScene : CCScene  基类

CCRotoZoomTransition 旋转缩小切换
CCJumpZoomTransition 缩小后跳跃切换
CCSlideInLTransition 从左向右切换
CCSlideInRTransition 从右向左切换
CCSlideInTTransition 从上向下切换
CCSlideInBTransition 从下向上切换
CCShrinkGrowTransition 逐渐缩小切换
CCFlipXTransition x中间为轴平面式旋转切换
CCFlipYTransition y中间为轴平面式旋转切换
CCFlipAngularTransition 侧翻式旋转切换
CCZoomFlipXTransition 缩小后x为轴旋转切换
CCZoomFlipYTransition 缩小后y为轴旋转切换
CCZoomFlipAngularTransition 缩小侧翻式旋转切换
CCFadeTransition 逐渐变暗切换
CCCrossFadeTransition   逐渐变暗切换2
CCTurnOffTilesTransition 随机方块覆盖切换
CCSplitColsTransition 三条上下分开切换
CCSplitRowsTransition 三条左右分开切换
CCFadeTRTransition 小方块大方块式切换左下到右上眩!
CCFadeBLTransition 小方块大方块式切换右上到左下眩!
CCFadeUpTransition 百叶窗从下向上
CCFadeDownTransition 百叶窗从上向下

CCTransitionRotoZoom : CCTransitionScene 旋转进入
CCTransitionJumpZoom : CCTransitionScene 跳动进入
CCTransitionMoveInL : CCTransitionScene<CCTransitionEaseScene> 从左侧进入
CCTransitionMoveInR : CCTransitionMoveInL 从右侧进入
CCTransitionMoveInT : CCTransitionMoveInL 从顶部进入
CCTransitionMoveInB : CCTransitionMoveInL 从底部进入
CCTransitionSlideInL :
CCTransitionScene<CCTransitionEaseScene> 
从左侧滑入
CCTransitionSlideInR : CCTransitionSlideInL 从右侧滑入
CCTransitionSlideInB : CCTransitionSlideInL 从顶部滑入
CCTransitionSlideInT : CCTransitionSlideInL 从底部滑入
CCTransitionShrinkGrow : CCTransitionScene<CCTransitionEaseScene> 交替进入
CCTransitionFlipX : CCTransitionSceneOriented x轴翻入(左右)
CCTransitionFlipY : CCTransitionSceneOriented y轴翻入(上下)
CCTransitionFlipAngular : CCTransitionSceneOriented 左上右下轴翻入
CCTransitionZoomFlipX : CCTransitionSceneOriented x轴翻入放大缩小效果(左右)
CCTransitionZoomFlipY : CCTransitionSceneOriented y轴翻入放大缩小效果(上下)
CCTransitionZoomFlipAngular :CCTransitionSceneOriented  左上右下轴翻入放大缩小效果
CCTransitionFade : CCTransitionScene  变暗变亮进入
CCTransitionCrossFade : CCTransitionScene 渐变进入
CCTransitionTurnOffTiles : CCTransitionScene<CCTransitionEaseScene> 小方格消失进入
CCTransitionSplitCols : CCTransitionScene<CCTransitionEaseScene> 竖条切换进入
CCTransitionSplitRows : CCTransitionSplitCols 横条切换进入
CCTransitionFadeTR : CCTransitionScene<CCTransitionEaseScene> 小方格右上角显示进入
CCTransitionFadeBL : CCTransitionFadeTR 小方格左下角显示进入
CCTransitionFadeUp : CCTransitionFadeTR 横条向上显示进入
CCTransitionFadeDown : CCTransitionFadeTR 横条向下显示进入

修改开始菜单“设置”按钮事件处理,添加CCTransitionZoomFlipX作为场景切换特效的过渡效果。

 void SceneTransitionTestLayer::btnSettingClickCallback(CCObject* sender)
{
CCScene* pSettingScene=new SettingScene();
CCScene* transSettingScene=CCTransitionFlipX::transitionWithDuration(1.2f,pSettingScene,tOrientation::kOrientationLeftOver);//场景切换特效
CCDirector::sharedDirector()->pushScene(transSettingScene);
}

运行,点击“设置”按钮,场景切换添加了转场效果。

这样,添加场景切换特效的过渡后,使得场景切换不再生硬,显得更炫。

SceneTransitionTest.h完整源码

SceneTransitionTest.h

 #ifndef _SCENE_TRANSITION_TEST_
#define _SCENE_TRANSITION_TEST_ #include "cocos2d.h" using namespace cocos2d; class SceneTransitionTestScene:public CCScene
{
public:
SceneTransitionTestScene();
~SceneTransitionTestScene(); virtual void onEnter();
}; class SceneTransitionTestLayer:public CCLayer
{
public:
SceneTransitionTestLayer();
~SceneTransitionTestLayer(); void btnStartClickCallback(CCObject* pSender);//开始按钮
void btnSettingClickCallback(CCObject* pSender);//设置按钮
void btnRecordClickCallback(CCObject* pSender);//纪录按钮
void btnHelpClickCallback(CCObject* pSender);//帮助按钮
}; //-----------------------------------------
//
//SettingScene
//
//-----------------------------------------
class SettingScene:public CCScene
{
public:
SettingScene();
~SettingScene(); virtual void onEnter();
}; class SettingLayer:public CCLayer
{
public:
SettingLayer();
~SettingLayer(); public:
void MenuItemSoundCallback(CCObject* pSender);//音效Toggle
void MenuItemBackgroundCallback(CCObject* pSender);//背景Toggle
void BtnGoBackCallback(CCObject* pSender);//返回按钮
}; #endif

SceneTransitionTest.cpp完整源码

SceneTransitionTest.cpp

 /*www.cnblogs.com/suguoqiang*/
#include "pch.h"
#include "Classes\SceneTransitionTest.h" //------------------------------------
//
//SceneTransitionTestLayer
//
//------------------------------------
SceneTransitionTestLayer::SceneTransitionTestLayer()
{
CCDirector::sharedDirector()->setDeviceOrientation(ccDeviceOrientation::kCCDeviceOrientationPortrait);//设置朝向,竖屏
//背景
CCSprite* pBackground=CCSprite::spriteWithFile("img_background.png");
pBackground->setAnchorPoint(ccp(,));//设置锚点在图片右上角
pBackground->setPosition(ccp(,));
this->addChild(pBackground,-); //菜单按钮
char strBtnMenuItemSprite[]="btn_Menu.png";
CCSprite* btnStartNormal=CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnStartSelected=CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnSettingNormal =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnSettingSelected =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnRecordNormal =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnRecordSelected =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnHelpNormal =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,));
CCSprite* btnHelpSelected =CCSprite::spriteWithFile(strBtnMenuItemSprite,CCRectMake(,*,,)); CCMenuItemSprite* btnStart=CCMenuItemSprite::itemFromNormalSprite(btnStartNormal,btnStartSelected,this,menu_selector(SceneTransitionTestLayer::btnStartClickCallback));
CCMenuItemSprite* btnSetting=CCMenuItemSprite::itemFromNormalSprite(btnSettingNormal,btnSettingSelected,this,menu_selector(SceneTransitionTestLayer::btnSettingClickCallback));
CCMenuItemSprite* btnRecord=CCMenuItemSprite::itemFromNormalSprite(btnRecordNormal,btnRecordSelected,this,menu_selector(SceneTransitionTestLayer::btnRecordClickCallback));
CCMenuItemSprite* btnHelp=CCMenuItemSprite::itemFromNormalSprite(btnHelpNormal,btnHelpSelected,this,menu_selector(SceneTransitionTestLayer::btnHelpClickCallback)); CCMenu* menu=CCMenu::menuWithItems(btnStart,btnSetting,btnRecord,btnHelp,NULL);
menu->alignItemsVertically();
this->addChild(menu,);
} SceneTransitionTestLayer::~SceneTransitionTestLayer()
{} void SceneTransitionTestLayer::btnStartClickCallback(CCObject* sender)
{} void SceneTransitionTestLayer::btnSettingClickCallback(CCObject* sender)
{
CCScene* pSettingScene=new SettingScene();
CCScene* transSettingScene=CCTransitionFlipX::transitionWithDuration(5.2f,pSettingScene,tOrientation::kOrientationLeftOver);//场景切换特效
CCDirector::sharedDirector()->pushScene(transSettingScene);
} void SceneTransitionTestLayer::btnRecordClickCallback(CCObject* sender)
{} void SceneTransitionTestLayer::btnHelpClickCallback(CCObject* sender)
{} //------------------------------------
//
//SceneTransitionTestScene
//
//------------------------------------
SceneTransitionTestScene::SceneTransitionTestScene()
{} SceneTransitionTestScene::~SceneTransitionTestScene()
{} void SceneTransitionTestScene::onEnter()
{
CCScene::onEnter();
CCLayer* pStartPageLayer=new SceneTransitionTestLayer();
this->addChild(pStartPageLayer);
pStartPageLayer->release();
} //------------------------------------
//
//SettingLayer
//
//------------------------------------ SettingLayer::SettingLayer()
{
//背景
CCSprite* pBackground=CCSprite::spriteWithFile("img_background.png");
pBackground->setAnchorPoint(ccp(,));//设置锚点在图片右上角
pBackground->setPosition(ccp(,));
this->addChild(pBackground,-); //菜单
CCMenuItemLabel* pMenuItemSoundTitle=CCMenuItemLabel::itemWithLabel(CCLabelBMFont::labelWithString("音效","fonts/YaHeiChinese.fnt"));
pMenuItemSoundTitle->setScale(2.0f);//放大2.0倍
pMenuItemSoundTitle->setIsEnabled(false);
pMenuItemSoundTitle->setColor(ccc3(,,));//字体颜色
CCMenuItemToggle* pMenuItemSound=CCMenuItemToggle::itemWithTarget(this,
menu_selector(SettingLayer::MenuItemSoundCallback),
CCMenuItemFont::itemFromString("On"),
CCMenuItemFont::itemFromString("Off"),
NULL);
CCMenuItemLabel* pMenuItemBackgroundTitle=CCMenuItemLabel::itemWithLabel(CCLabelBMFont::labelWithString("背景","fonts/YaHeiChinese.fnt"));
pMenuItemBackgroundTitle->setScale(2.0f);//放大2.0倍
pMenuItemBackgroundTitle->setIsEnabled(false);
pMenuItemBackgroundTitle->setColor(ccc3(,,));//字体颜色
CCMenuItemToggle* pMenuItemBackground=CCMenuItemToggle::itemWithTarget(this,
menu_selector(SettingLayer::MenuItemBackgroundCallback),
CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithFile("bg_Sea1Mini.png"),CCSprite::spriteWithFile("bg_Sea1Mini.png")),
CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithFile("bg_Sea2Mini.jpg"),CCSprite::spriteWithFile("bg_Sea2Mini.jpg")),
NULL); CCMenu* menu=CCMenu::menuWithItems(pMenuItemSoundTitle,pMenuItemSound,pMenuItemBackgroundTitle,pMenuItemBackground,NULL);
menu->alignItemsVerticallyWithPadding();
this->addChild(menu,); //返回按钮
CCSize s=CCDirector::sharedDirector()->getWinSize();
CCLabelTTF* pGoBack=CCLabelTTF::labelWithString("Go Back","fonts/YaHeiChinese.fnt",);
pGoBack->setColor(ccc3(,,));
CCMenuItemLabel* btnGoBack=CCMenuItemLabel::itemWithLabel(pGoBack,this,menu_selector(SettingLayer::BtnGoBackCallback));
CCMenu* menuGoBack=CCMenu::menuWithItem(btnGoBack);
menuGoBack->setPosition(s.width/,);
this->addChild(menuGoBack);
} SettingLayer::~SettingLayer()
{} void SettingLayer::MenuItemSoundCallback(CCObject* sender)
{} void SettingLayer::MenuItemBackgroundCallback(CCObject* sender)
{} void SettingLayer::BtnGoBackCallback(CCObject* sender)
{
//场景切换特效返回
//CCScene* pSceneTransitionTestScene=new SceneTransitionTestScene();
//CCScene* transSceneTransitionTestScene=CCTransitionJumpZoom::transitionWithDuration(1.2f,pSceneTransitionTestScene);
//CCDirector::sharedDirector()->replaceScene(transSceneTransitionTestScene);
CCDirector::sharedDirector()->popScene();
} //------------------------------------
//
//SettingScene
//
//------------------------------------ SettingScene::SettingScene()
{} SettingScene::~SettingScene()
{} void SettingScene::onEnter()
{
CCScene::onEnter();
CCLayer* pLayer=new SettingLayer();
this->addChild(pLayer);
pLayer->release();
}

著作权声明:本文由http://www.cnblogs.com/suguoqiang 原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

Learning Cocos2d-x for WP8(6)——场景切换和场景过渡效果的更多相关文章

  1. cocos2dx3.1从零学习(二)菜单、场景切换、场景传值

    转:http://www.it165.net/pro/html/201406/16195.html 回顾一下上一篇的内容,我们已经学会了创建一个新的场景scene,添加sprite和label到层中, ...

  2. cocos2dx 3.1从零学习(二)——菜单、场景切换、场景传值

    回想一下上一篇的内容,我们已经学会了创建一个新的场景scene,加入sprite和label到层中.掌握了定时事件schedule. 我们能够顺利的写出打飞机的主场景框架. 上一篇的内容我练习了七个新 ...

  3. Cocos2d-X3.0 刨根问底(九)----- 场景切换(TransitionScene)源码分析

    上一章我们分析了Scene与Layer相关类的源码,对Cocos2d-x的场景有了初步了解,这章我们来分析一下场景变换TransitionScene源码. 直接看TransitionScene的定义 ...

  4. Cocos2d-X3.0 刨根问底(九)----- 场景切换(TransitionScene)源代码分析

    上一章我们分析了Scene与Layer相关类的源代码,对Cocos2d-x的场景有了初步了解,这章我们来分析一下场景变换TransitionScene源代码. 直接看TransitionScene的定 ...

  5. ‎Cocos2d-x 学习笔记(3.1) Scene 场景与场景切换

    1. Scene 简介 游戏中我们看到/看不到的所有元素都是展示在场景之Scene上. 我们可以把场景比作放在地上的没盖纸箱,层Layer是纸箱里堆放的玻璃,Sprite等元素画在玻璃Layer上,这 ...

  6. [cocos2d]场景切换以及切换进度显示

    本文主要分两个部分叙述,第一是场景切换,第二是场景切换的进度显示. 一.场景切换 参考learn-iphone-and-ipad-cocos2d-game-development 第五章内容 coco ...

  7. [Cocos2d-x For WP8]Transition 场景切换

    在游戏中通常会打完了一关之后就会从当前的场景转换到另外一关的场景了,在Cocos2d-x中是由CCScene类表示一个场景.那么场景(CCScene)是为游戏中的精灵(CCSprite)提供了舞台,场 ...

  8. cocos2d 场景切换和弹出场景、收回场景

    场景弹出收回很简单 用以下代码在任意一个地方显示“设置场景”: [[CCDirector sharedDirector] pushScene:[Settings scene]]; 如果你身处“设置场景 ...

  9. 【Cocos2d-x 3.x】 场景切换生命周期、背景音乐播放和场景切换原理与源码分析

    大部分游戏里有很多个场景,场景之间需要切换,有时候切换的时候会进行背景音乐的播放和停止,因此对这块内容进行了总结. 场景切换生命周期 场景切换用到的函数: bool Setting::init() { ...

随机推荐

  1. Android控件拖动的实现

    这个也是从网上得到的代码,例子比较简单,但是如果有需要此功能的,这个例子可以提供很多提示,首先,给个截图 这个是拖动以后的效果,一个imageview和一个button控件,提供两份代码下载吧,一份是 ...

  2. hdu 5014 思维题/推理

    http://acm.hdu.edu.cn/showproblem.php?pid=5014 从小数開始模拟找方法规律,然后推广,尤其敢猜敢尝试,错了一种思路继续猜-----这是一种非常重要的方法啊 ...

  3. JDK1.5后的新特性之一:可变参数

    Java中的可变参数 Java1.5后出现了一个新特性,即可变参数,格式为:类型 …参数 例如: 总的来说,可变参数可以当成是数组来用: public void testSum() { System. ...

  4. WPF的消息机制

    前言 谈起“消息机制”这个词,我们都会想到Windows的消息机制,系统将键盘鼠标的行为包装成一个Windows Message,然后系统主动将这些Windows Message派发给特定的窗口,实际 ...

  5. Flash Builder 条件编译的实现

    最近项目需要开发多个版本,  而Flash又没有像C++ 那样的 #ifdef,  来让一套代码支持多个版本的编译发布; 经过研究, 终于知道Flash Builder如何支持条件编译: 1. 在项目 ...

  6. 2014 Multi-University Training Contest 1 — D. Task

    题目链接:pid=4864">http://acm.hdu.edu.cn/showproblem.php?pid=4864 题目大意: 有N个机器.M个任务. 当中每一个机器有xi,y ...

  7. 深度RAMOS,把操作系统全部安装在内存上

     你看下深度RAMOS就知道了  RAMOS+音速启动+绿色软件+云端  很爽 http://www.shenduwin7.com/jiaocheng/52.html

  8. 基于Apriori算法的Nginx+Lua+ELK异常流量拦截方案 郑昀 基于杨海波的设计文档(转)

    郑昀 基于杨海波的设计文档 创建于2015/8/13 最后更新于2015/8/25 关键词:异常流量.rate limiting.Nginx.Apriori.频繁项集.先验算法.Lua.ELK 本文档 ...

  9. mysql 创建函数 error Code: 1227. Access denied;

    mysql> show function status; +------+------------------+----------+------------+----------------- ...

  10. ExtJs4 笔记(7) Ext.tip.ToolTip 提示

    本篇介绍提示控件,ExtJs支持两种方式定义提示,可以支持普通html元素和一般的ExtJs UI控件. 一.基本提示 Ext.tip.ToolTip 1.最简单的提示 下面通过代码定义一个最简单的提 ...