我尝试实现简单的暂停当前场景(游戏级别)
跳转到主菜单屏幕,当点击恢复按钮时,游戏将从它弯腰的地方恢复。
我尝试使用
我的主类有静态场景对象
Scene* HelloWorld::scene = nullptr;
Scene* HelloWorld::createScene()
{
// 'scene' is an autorelease object
scene = Scene::create();
// 'layer' is an autorelease object
auto layer = HelloWorld::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
auto menuItem1 = MenuItemImage::create(
"Menu-128.png",
"Menu-128.png",
CC_CALLBACK_1(HelloWorld::menuItemCallback, this));
menuItem1->setPosition(Vec2(origin.x + menuItem1->getContentSize().width/2 ,
origin.y + visibleSize.height - menuItem1->getContentSize().height/2));
auto menu1 = Menu::create(menuItem1, NULL);
menu1->setPosition(Vec2::ZERO);
this->addChild(menu1, 200);
this->schedule(schedule_selector(HelloWorld::MainGameLoop));
return true;
}
void HelloWorld::MainGameLoop(float dt)
{
log("animation runnig .. ")
}
void HelloWorld::menuItemCallback(Ref* pSender)
{
Director::getInstance()->pushScene(scene);
Director::getInstance()->replaceScene(MenuLayer::createScene());
}
它跳转到MenuLayer场景就好了 但是当我从MenuLayer回到HelloWorld(主场景)的时候 动画片没有恢复,为什么? 这是我在MenuLayer对象中按下简历时的代码
void MenuLayer::menuResumeCallback(Ref* pSender)
{
Director::getInstance()->popScene();
}
答案 0 :(得分:0)
您可以通过按下/弹出 MenuLayer 场景来执行此操作:
void HelloWorld::menuItemCallback(Ref* pSender)
{
Director::getInstance()->pushScene(MenuLayer::createScene());
}
void MenuLayer::menuResumeCallback(Ref* pSender)
{
Director::getInstance()->popScene();
}
当 HelloWorld :: menuItemCallback 被调用时, MenuLayer 场景被添加到场景堆栈中,并且在下一步它将成为一个正在运行的场景。当您按下继续按钮时, Director :: popScene 被调用,并且场景堆栈中剩下的唯一场景是具有先前状态的 HelloWorld 场景。