cocos2d-x 场景切换

上一篇我们解析了HelloWorld程序了

下面开始编写我们自己的程序吧,呵呵 ,实现一个小小的功能你都会有成就感的!!!

首先讲场景之间的切换吧:

从一个场景切换到另一个场景,首先要新建一个cpp文件和.h文件 ,例如你要从HelloWorld场景切换到NewGame场景

新建一个NewGame.cpp 和NewGame.h文件

新建成功后,是两个空文件,其中的代码可以按照HelloWorld.cpp和HelloWorld.h文件写。如果你懒得写就直接copy吧。然后把其中的该修改的地方修改了。

这样就创建了两个场景了。那么接下来该如何实现切换呢 ?

在HelloWorld.h里面新定义一个函数:例如:

virtual void trans(CCObject *pSender)

在HelloWorld.cpp里面去实现这个函数(场景的切换)

void HelloWorld::trans(CCObject *pSender){

  CCScene *s = CCScene::node();

  NewGame *layer = NewGame::node();

  s->addChild(layer);

  CCDirector::sharedDirector()->replaceScene(CCTransitionPageTurn::transitionWithDuration(1, s, true));//这里我是实现的翻页效果,还有很多的其他效果,大家可以去尝试,其他的效果我将列在下面

}

然后就是如何调用这个函数呢 ?

其实很简单呢!例如你建了一个菜单选项:

CCMenuItemImage *pLastMenu = CCMenuItemImage::itemFromNormalImage("last.png","last1.png",this,   

 menu_selector(NewGame::trans));//这个就是调用了这个函数,我这里是用图片做的菜单选项,你也可以用字符串做选项,大同小异。

 

*********************************场景的切换效果***********************************

 

CCTransitionJumpZoom::transitionWithDuration(t, s);//跳跃式,本场景先会缩小,然后跳跃进来

CCTransitionFade::transitionWithDuration(t, s);//淡出淡入,原场景淡出,新场景淡入

CCTransitionFade::transitionWithDuration(t, s, ccWHITE);//如果上一个的函数,带3个参数,则第三个参数就是淡出淡入的颜色 CCTransitionFlipX::transitionWithDuration(t, s, kOrientationLeftOver);//x轴左翻

 CCTransitionFlipX::transitionWithDuration(t, s, kOrientationRightOver);//x轴右翻

CCTransitionFlipY::transitionWithDuration(t, s, kOrientationUpOver);//y轴上翻

CCTransitionFlipY::transitionWithDuration(t, s, kOrientationDownOver);//y轴下翻

 CCTransitionFlipAngular::transitionWithDuration(t, s, kOrientationLeftOver);//有角度转的左翻

 CCTransitionFlipAngular::transitionWithDuration(t, s, kOrientationRightOver);//有角度转的右翻

CCTransitionZoomFlipX::transitionWithDuration(t, s, kOrientationLeftOver);//带缩放效果x轴左翻

CCTransitionZoomFlipX::transitionWithDuration(t, s, kOrientationRightOver);//带缩放效果x轴右翻

 CCTransitionZoomFlipY::transitionWithDuration(t, s, kOrientationUpOver);//带缩放效果y轴上翻

CCTransitionZoomFlipY::transitionWithDuration(t, s, kOrientationDownOver);//带缩放效果y轴下翻

CCTransitionZoomFlipAngular::transitionWithDuration(t, s, kOrientationLeftOver);//带缩放效果/有角度转的左翻

CCTransitionZoomFlipAngular::transitionWithDuration(t, s, kOrientationRightOver);//带缩放效果有角度转的右翻

CCTransitionShrinkGrow::transitionWithDuration(t, s);//交错换

CCTransitionRotoZoom::transitionWithDuration(t, s);//转角换

CCTransitionMoveInL::transitionWithDuration(t, s);//新场景从左移入覆盖

CCTransitionMoveInR::transitionWithDuration(t, s);//新场景从右移入覆盖

CCTransitionMoveInT::transitionWithDuration(t, s);//新场景从上移入覆盖

 CCTransitionMoveInB::transitionWithDuration(t, s);//新场景从下移入覆盖

CCTransitionSlideInL::transitionWithDuration(t, s);//场景从左移入推出原场景

 CCTransitionSlideInR::transitionWithDuration(t, s);//场景从右移入推出原场景

 CCTransitionSlideInT::transitionWithDuration(t, s);//场景从上移入推出原场景

CCTransitionSlideInB::transitionWithDuration(t, s);//场景从下移入推出原场景

以下三个需要检测opengl版本是否支持CCConfiguration::sharedConfiguration()->getGlesVersion() <= GLES_VER_1_0如果为真则为不支持 CCTransitionCrossFade::transitionWithDuration(t,s);//淡出淡入交叉,同时进行

 CCTransitionRadialCCW::transitionWithDuration(t,s);//顺时针切入

 CCTransitionRadialCW::transitionWithDuration(t,s);//逆时针切入

以下两个需要先设置摄像机,使用CCDirector::sharedDirector()->setDepthTest(true);

 CCTransitionPageTurn::transitionWithDuration(t, s, false);//翻页,前翻

 CCTransitionPageTurn::transitionWithDuration(t, s, true);//翻页,后翻

CCTransitionFadeTR::transitionWithDuration(t, s);//向右上波浪

CCTransitionFadeBL::transitionWithDuration(t, s);//向左下波浪

CCTransitionFadeUp::transitionWithDuration(t, s);//向上百叶窗

CCTransitionFadeDown::transitionWithDuration(t, s);//向下百叶窗

CCTransitionTurnOffTiles::transitionWithDuration(t, s);//随机小方块

 CCTransitionSplitRows::transitionWithDuration(t, s);//按行切

 CCTransitionSplitCols::transitionWithDuration(t, s);//按列切

 

 

 

posted @ 2012-04-06 20:48  EWen.流  阅读(1263)  评论(0编辑  收藏  举报