更换导致Cocos2dx崩溃的场景

时间:2015-12-15 01:56:52

标签: ios iphone ipad cocos2d-x

当我退出一个场景时,使用以下代码退出到下一个场景;

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部分就是这个;

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

然后游戏不会崩溃,但是,由于我需要使用屏幕截图,因此无法实现所需的结果。

有没有办法可以调用上面的方法而无需将其作为孩子添加?

1 个答案:

答案 0 :(得分:0)

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