一个helloworld场景和setting场景,helloworld.cpp代码如下
#include “HelloWorldScene.h”
#include “SimpleAudioEngine.h”
USING_NS_CC;
Scene* HelloWorld::createScene()
{
return HelloWorld::create();
}
// on “init” you need to initialize your instance
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !Scene::init() )
{
return false;
}
auto visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
Sprite*bg = Sprite::create("menu/background.png");
bg->setPosition(Vec2(origin.x + visibleSize.width / 2,
origin.y + visibleSize.height / 2));
this->addChild(bg);
//setting
MenuItemImage*settingMenuItem = MenuItemImage::create(
"menu/settingn.png",
"menu/settings.png",
CC_CALLBACK_1(HelloWorld::menuItemSettingCallback, this));
settingMenuItem->setPosition(Director::getInstance()->convertToGL(Vec2(origin.x +
settingMenuItem->getContentSize().width / 2,
origin.y + settingMenuItem->getContentSize().height / 2)));
Menu*mu = Menu::create( settingMenuItem, NULL);
mu->setPosition(Vec2::ZERO);
this->addChild(mu);
return true;
}
void HelloWorld::menuItemSettingCallback(Ref *pSpender)
{
auto sc = Setting::createScene();
Director::getInstance()->pushScene(sc);
}
void HelloWorld::onEnter()
{
Scene::onEnter();
log(“HellowWorld onEnter”);
}
void HelloWorld::onExit()
{
Scene::onExit();
log(“HellowWorld onExit”);
}
void HelloWorld::cleanup()
{
Scene::cleanup();
log(“HellowWorld cleanup”);
}
头文件
ifndef HELLOWORLD_SCENE_H
#define HELLOWORLD_SCENE_H
#include “cocos2d.h”
#include “SettingScene.h”
class HelloWorld : public cocos2d::Scene
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
virtual void onEnter();
virtual void onExit();
virtual void cleanup();
// a selector callback
void menuItemSettingCallback(cocos2d::Ref *pSpender);
// implement the "static create()" method manually
CREATE_FUNC(HelloWorld);
};
#endif // HELLOWORLD_SCENE_H
setting.cpp
#include “SettingScene.h”
USING_NS_CC;
Scene* Setting::createScene()
{
auto scene = Scene::create();
auto layer = Setting::create();
scene->addChild(layer);
return scene;
}
bool Setting::init()
{
if (!Scene::init())
{
return false;
}
log("Setting init");
auto visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
Sprite *bg = Sprite::create("menu/setting-back.png");
bg->setPosition(Vec2(origin.x + visibleSize.width / 2,
origin.y + visibleSize.height / 2));
this->addChild(bg);
auto backItem = MenuItemImage::create(
"menu/backn.png",
"menu/backs.png",
CC_CALLBACK_1(Setting::menuBackCallback,this));
backItem->setPosition(Director::getInstance()->convertToGL(Vec2(origin.x +
backItem->getContentSize().width / 2,
origin.y + backItem->getContentSize().height / 2)));
// create menu, it's an autorelease object
auto menu = Menu::create(backItem, NULL);
menu->setPosition(Vec2::ZERO);
this->addChild(menu);
return true;
}
void Setting::menuBackCallback(Ref *pSender)
{
Director::getInstance()->popScene();
}
void Setting::onEnter()
{
}
void Setting::onExit()
{
}
void Setting::cleanup()
{
}
setting的头文件
#ifndef Setting_SCENE_H
#define Setting_SCENE_H
#include “cocos2d.h”
class Setting :public cocos2d::Scene
{
public:
static cocos2d::Scene *createScene();
virtual bool init();
virtual void onEnter();
virtual void onExit();
virtual void cleanup();
void menuBackCallback(cocos2d::Ref *pSender);
CREATE_FUNC(Setting);
};
#endif //Setting_SCENE_H
#define HELLOWRLD_SCENE_H
为什么返回backMenuItem会用不了啊,就是点它返回不了helloworld场景,求大神们指点!!!