2015-02-10 32 views
0

我嘗試執行簡單的暫停當前場景(遊戲關卡)
跳轉到主菜單屏幕並單擊繼續按鈕,該遊戲將從其彎腰的地方恢復。 我嘗試使用 我的主類具有靜態場景對象調用Director :: getInstance() - > popScene()後,計劃停止以觸發事件

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(主場景) 動畫dosn回去不會恢復,爲什麼? 這是代碼當我按下恢復在MenuLayer對象

void MenuLayer::menuResumeCallback(Ref* pSender) 
{ 

    Director::getInstance()->popScene(); 
} 

回答

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場景與以前的狀態。

相關問題