在调用Director :: getInstance() - > popScene()之后,计划停止以触发事件

时间:2015-02-10 14:39:23

标签: c++ cocos2d-x

我尝试实现简单的暂停当前场景(游戏级别)
跳转到主菜单屏幕,当点击恢复按钮时,游戏将从它弯腰的地方恢复。 我尝试使用 我的主类有静态场景对象

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();
}

1 个答案:

答案 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 场景。