我有一个Cocos2d-x 3.14项目,我正在尝试迁移到3.15,它适用于iOS,但它不适用于Android。 3.14在两者上都可以正常工作。
运行3.15迁移版本时,在使用this->成员访问标题中声明的成员时,会出现段错误。如果我添加局部变量,它可以正常工作。
Hpp文件:
class GameBoard : public Layer
{
public:
static cocos2d::Scene* createScene();
virtual bool init();
CREATE_FUNC(GameBoard);
// background
Sprite* background;
void setupBackGround();
...
}
Cpp文件:
void GameBoard::setupBackground() {
cocos2d::Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
if (this->background == NULL) {
doStuff();
}
}
'this-> background'一行崩溃了。有谁知道为什么会发生这种情况?
答案 0 :(得分:0)
事实证明,在Cocos2d-x 3.15中(至少在我们的项目中),在场景初始化之前调用'applicationResized'函数。把这个放在一起这样一个事实,即在这个applicationResized函数中的NULL检查中使用的指针都没有实际初始化为NULL,如果检查通过则导致错误。
从这个意义上来说,@πάνταῥεῖ是正确的,'this'(GameBoard)在那时没有被正确地实例化,而是指向随机记忆。