2015-12-15 114 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的init部分是this;

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方法中添加它之后释放它。