替换导致 Cocos2dx 崩溃的场景

Replacing scene causing crash on 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);

然后游戏没有闪退,但是没有达到预期效果,需要截图

有没有一种方法可以调用上述方法而不需要将其添加为子项?

您正在尝试添加无效指针 LipsColorScene::screenshot。您需要在替换场景之前保留它,然后在 init 方法中添加它之后释放它。