2015-12-15 3 views
0

Когда я выхожу из одной сцены в другую, используя следующий код;Замена смены сцены на Cocos2dx

if(_next->boundingBox().containsPoint(location)) 
    { 

     LipsColorScene::flagnext=false; 
     CCLog("click next"); 
     _next->setVisible(false); 
     _next->setPosition(ccp(1500, -500)); 
     lipstickscrollview->setVisible(false); 
     imageForShowingMask->setVisible(false); 
     // this->setScale(1.0f); 
     lipstickscrollview->setVisible(false); 
     LipsColorScene::screenshot= this; 
     CCDirector::sharedDirector()->getRunningScene()->removeChild(screenshot); 
     lipstickscrollview->setVisible(false); 
       imageForShowingMask->setVisible(false); 
      // this->setScale(1.0f); 
       lipstickscrollview->setVisible(false); 
     // CocosDenshion::SimpleAudioEngine::sharedEngine()->playEffect("sounds/btn_clicksound.mp3"); 
     CCDirector::sharedDirector()->replaceScene(LastScene::scene()); 
    } 

Когда он показывает LastScene, он выходит из строя, часть инициализации LastScene - это;

if (LipsColorScene::screenshot !=NULL) 
     { 
      LipsColorScene::screenshot->setPosition(ccp(115.833313,-111.562469)); 
      LipsColorScene::screenshot->setRotation(-17); 
      this->addChild(LipsColorScene::screenshot,0); 
     } 

Если я удалю эту линию;

this->addChild(LipsColorScene::screenshot,0); 

Тогда игра не падает, однако желаемый результат не достигается, поскольку мне нужно использовать скриншот.

Есть ли способ, который я могу назвать выше, без необходимости добавлять его в качестве ребенка?

+0

Зачем стажировка? Вы пытаетесь обойти узел для использования в следующей сцене? –

ответ

0

Вы пытаетесь добавить недействительный указатель LipsColorScene :: screenshot. Вам нужно будет сохранить его перед заменой сцены, а затем отпустите ее после добавления ее во время метода init.

Смежные вопросы