cocos2d-x初学笔记04:切换场景Scene

       在上一篇我们介绍了cocos2d-x中菜单Menu的使用。在一般的游戏中,点击play菜单后会跳转到游戏界面,那么这就涉及到游戏场景的切换。菜单所在的场景是HelloWorld的scene()函数实例化的一个场景,我们定义为场景A,那么我们在游戏的界面就是场景B,点击菜单后,菜单的回调函数实现从场景A跳转到场景B。

      TestCpp项目实例里面的SceneTest演示了场景切换的实现和其场景过渡效果,这里我们只选取一种淡入淡出的效果进行讲解,更多的效果请参看官方文档。

         (注意:我使用的cocos2d-x版本是2.0.4,系统是win7)下载地址

        为了方便起见,我们就接着使用上一篇创建的项目MenuTest,实现点击图片菜单后跳转到另一个场景的功能。菜单我们已经添加完毕,那么我们接着进行其他代码的添加。首先我们在HelloWorld.h文件中添加一个场景类MyScene和布景类MyLayer

class MyScene:public CCScene
{
public:
	//构造函数
	MyScene();
	//析构函数
	~MyScene();
};

class MyLayer:public CCLayer
{
public:
	//构造函数
	MyLayer();
	//析构函数
	~MyLayer();
};

然后在HelloWorld.cpp文件中添加两个类构造函数和析构函数的实现

MyScene::MyScene()
{

}
MyScene::~MyScene()
{

}
MyLayer::MyLayer()
{
	//获得屏幕的大小
	CCSize size = CCDirector::sharedDirector()->getWinSize();

	//创建一行文本并设置位置在屏幕中间
	CCLabelTTF* label = CCLabelTTF::create("This is MyScene.", "Arial",30);
	label->setPosition(ccp(size.width/2,size.height/2));
	//将这行文本添加到布景中
	addChild(label);
}
MyLayer::~MyLayer()
{

}

修改之前写的图片菜单的回调函数imageMenuCallback(),修改结果如下:

void HelloWorld::imageMenuCallback(CCObject* pSender)
{
	//实例化一个场景MyScene
	CCScene* scene=new MyScene();
	//实例化一个布景MyLayer
	CCLayer* layer=new MyLayer();
	//将布景添加到场景中
	scene->addChild(layer,0);

	//运行新创建的这个场景,并设置过渡效果(此处为淡入淡出)
	CCDirector::sharedDirector()->replaceScene( CCTransitionFade::create(2, scene));
	//释放
	layer->release();
	scene->release();
}

运行程序,当我们点击图片菜单后,跳转到另一场景,并带有淡入淡出的切换效果。点击后的界面如下

                          

这篇文章我们实现了场景的切换,功能的实现和效果都十分简单,希望能给初学者带来一点参考。

最后祝愿每一个奋斗在路上的人早日实现梦想!


你可能感兴趣的:(cocos2d-x引擎初学笔记)