(新手)新创建的场景中的“返回”精灵用不了???

一个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场景,求大神们指点!!!

在Director::getInstance()->popScene();下断点调试,还有引擎中的popScene()逻辑下断点调试

调试以后感觉是backMenuItem点不了,而且我在setting场景里又加了一个菜单项,但是也点不了

没有执行过回调函数,为什么呢?

这个写错了吧,应该是继承layer

这里相应的改成layer:init

我用的cocos2dx3.15版本,项目新建成功的时候就是这样的了,根据你说的改了以后,调试后只显示了setting场景,helloworld场景反而没了???

我说的是只改setting这个类,helloworld不动

改好了,可是“返回”精灵(backItem)还是用不了,点击以后没有进行回调函数。???

你不能继承了onenter和onexit而不使用,要么去掉,要么写成
void Setting::onEnter()
{
Layer::onEnter();
}

void Setting::onExit()
{
Layer::onExit();
}

感谢大神指点,问题解决了。谢谢!!!