【Cocos2D-X 游戏引擎】初窥门径(2) 场景的切换及特效

在上节的基础上,看看怎么实现场景的切换。

添加一个场景WelcomeScene

#include "WelcomeScene.h"
#include "GameScene.h"

using namespace cocos2d;

CCScene* WelcomeScene::scene()
{
	CCScene * scene = NULL;
	do
	{
		scene=CCScene::create();

		WelcomeScene* gameScene=WelcomeScene::create();
		scene->addChild(gameScene);


	}while(0);

	return scene;
}

bool WelcomeScene::init()
{
	this->setTouchEnabled(true);
	bool bRet = false;
	do
	{
		CCSprite* pMap = CCSprite::create("welcome_bg.png");
		CCSize size = CCDirector::sharedDirector()->getWinSize();
		pMap->setPosition(ccp(size.width/2, size.height/2));
		this->addChild(pMap, 0);

		CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
			"StartGameNormal.png",
			"StartGamePressed.png",
			this,
			menu_selector(WelcomeScene::menuStartCallback));
		CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
		pMenu->setPosition(size.width/2,size.height/2);
		this->addChild(pMenu, 1);
			
	}while(0);

	bRet=true;

	return bRet;
}


void WelcomeScene::menuStartCallback(CCObject* pSender)
{
	CCScene * scene=GameScene::scene();
	CCDirector::sharedDirector()->replaceScene(scene);
}
在menuStartCallback()中通过导演来切换场景。

【Cocos2D-X 游戏引擎】初窥门径(2) 场景的切换及特效_第1张图片


使用特效:

CCDirector::sharedDirector()->replaceScene((CCTransitionSlideInR::create(1, scene)));
【Cocos2D-X 游戏引擎】初窥门径(2) 场景的切换及特效_第2张图片


网上找的特效:

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);//按列切




转载请注明出处:http://blog.csdn.net/Vestigge

你可能感兴趣的:(游戏,cocos2d-x)