您的位置:首页 > 移动开发 > Cocos引擎

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

2013-01-30 21:13 330 查看
       在上一篇我们介绍了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();
}


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

                          


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

最后祝愿每一个奋斗在路上的人早日实现梦想!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息