<span style="color:#ff0000;">这里是主场景的界面的C++代码:</span>#include "HelloWorldScene.h"
#include"GameScene.h"
USING_NS_CC;
using namespace std;
Scene* HelloWorld::createScene(){
auto scene = Scene::create();
auto layer = HelloWorld::create();
scene->addChild(layer);
return scene;
}
bool HelloWorld::init(){
if ( !Layer::init() ){
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
Sound->playBackgroundMusic("21.mp3",true);
auto background = Sprite::create("zhujiemian.png");
this->addChild(background);
background->setAnchorPoint(Vec2(0,0));
auto start = MenuItemFont::create("start", CC_CALLBACK_1(HelloWorld::onStart, this));
start->setName("start");
auto quit = MenuItemFont::create("quit", CC_CALLBACK_1(HelloWorld::onStart, this));
quit->setName("quit");
auto menu = Menu::create(start,quit,nullptr);
menu->alignItemsVertically();
this->addChild(menu);
menu->setPositionY(visibleSize.height / 2 - 400);
return true;
}
void HelloWorld::onStart(Ref* pSender){
auto ss = (MenuItemFont*)pSender;
string str = ss->getName();
Sound->playEffect("21.mp3");
if (str == "start"){ //切换场景
auto scene = GameScene::createScene();
Director::getInstance()->replaceScene(TransitionSlideInT::create(2, scene));
}
else{
Director::getInstance()->end();
}
}这里是对应的头文件:#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include"SimpleAudioEngine.h"
#include "cocos2d.h"
using namespace CocosDenshion;
class HelloWorld : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
SimpleAudioEngine* Sound = SimpleAudioEngine::getInstance();
virtual bool init();
void onStart(cocos2d::Ref* pSender);
CREATE_FUNC(HelloWorld);
};
#endif
这里是第二场景的C++代码:#include"GameScene.h"
#include "HelloWorldScene.h"
USING_NS_CC;
using namespace std;
Scene* GameScene::createScene(){
auto scene = Scene::create();
auto layer = GameScene::create();
scene->addChild(layer);
return scene;
}
bool GameScene::init(){
if (!Layer::init()){
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
auto background = Sprite::create("background.jpg",Rect(0,0,768,1024));
this->addChild(background);
background->setAnchorPoint(Vec2(0, 0));
auto quit = MenuItemFont::create("quit", CC_CALLBACK_1(GameScene::abc, this));
quit->setName("quit");
auto menu = Menu::create(quit, nullptr);
menu->alignItemsVertically();
this->addChild(menu);
menu->setPositionY(visibleSize.height / 2 + 400);
menu->setPositionX(visibleSize.width / 2 + 300);
return true;
}
void GameScene::abc(Ref* pSender){
auto ss = (MenuItemFont*)pSender;
string str = ss->getName();
if (str == "quit"){ //切换场景
auto scene = HelloWorld::createScene();
Director::getInstance()->replaceScene(TransitionSlideInT::create(2, scene));
}
}
然后是对应的头文件:#ifndef __GAME_SCENE_H__
#define __GAME_SCENE_H__
#include"SimpleAudioEngine.h"
#include "cocos2d.h"
using namespace CocosDenshion;
class GameScene : public cocos2d::Layer
{
public:
static cocos2d::Scene* createScene();
SimpleAudioEngine* Sound = SimpleAudioEngine::getInstance();
virtual bool init();
void abc(cocos2d::Ref* pSender);
CREATE_FUNC(GameScene);
};
#endif之间一些代码实现获取资源图片,然后进行两个场景之间的切换,对于代码不难,要多理解然后再学会去运用。版权声明:本文为Cineze原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。