场景就是游戏的不同状态,如游戏菜单、游戏关卡等等。而场景的切换由导演类CCDirector来完成,通常我们使用replaceScene(CCScene
*pScene)函数来切换场景。为了方便我使用上一节的项目,新建一个场景GameScene类和一个图层GameLayer类。
//GameScene.h
#pragma once#include "cocos2d.h" //使用VS类向导添加,需要手工添加这句
class GameScene : public cocos2d::CCScene
{
public:
GameScene(void);
~GameScene(void);
};
//GameScene.cpp
#include "GameScene.h"
GameScene::GameScene(void)
{}
GameScene::~GameScene(void)
{}//GameLayer.h
#pragma once
#include "cocos2d.h"class GameLayer : public cocos2d::CCLayer
{
public:
GameLayer(void);
~GameLayer(void);
};//GameLayer.cpp
#include "GameLayer.h"
using namespace cocos2d; //添加命名空间,要不然引擎的类如CCSize才能使用
GameLayer::GameLayer(void)
{
//获得屏幕的大小
CCSize size = CCDirector::sharedDirector()->getWinSize();//创建一行文本并设置位置在屏幕中间
CCLabelTTF* pLabel= CCLabelTTF::create("Game Scene.", "Arial",30);
pLabel->setPosition(ccp(size.width/2,size.height/2));
//将这行文本添加到布景中
addChild(pLabel);
CCSprite* pSprite =
CCSprite::create("water.png");
pSprite->setPosition(ccp(size.width/2,size.height/2+80));
addChild(pSprite);
}GameLayer::~GameLayer(void)
{
}
然后修改图片菜单的回调函数如下:
void HelloWorld::menuPlayCallback(CCObject* pSender)
{
CCLOG("menuPlayCallback");//实例化一个场景和图层,并将图层添加到场景中
CCScene* pScene=new GameScene(); //需要引入头文件哈
CCLayer* pLayer=new GameLayer();
pScene->addChild(pLayer,0);//使用淡入淡出效果切换场景
CCDirector::sharedDirector()->replaceScene( CCTransitionFade::create(2, pScene));
//释放
pLayer->release();
pScene->release();
}
OK场景切换代码写完了,看看运行效果:
05--简单场景切换与精灵创建,码迷,mamicode.com