在上一篇我们介绍了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(); };
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() { }
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(); }
这篇文章我们实现了场景的切换,功能的实现和效果都十分简单,希望能给初学者带来一点参考。
最后祝愿每一个奋斗在路上的人早日实现梦想!