替换导致 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 方法中添加它之后释放它。
当我退出一个场景时,使用以下代码进入下一个场景;
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 方法中添加它之后释放它。