为什么我的全局布尔值总是导致错误?

时间:2013-07-06 20:33:16

标签: c++ cocos2d-x

所以我试图在C ++中使用全局布尔变量,但它总是返回false。我在mainmenuscene.h文件中定义了值:

#ifndef MAINMENUSCENE_H_
#define MAINMENUSCENE_H_
#include "cocos2d.h"

extern bool boo_startgame;


class MainMenu : public cocos2d::CCLayer
{....}

在我的mainmenuscene.cpp文件中,我将其设置为true:

void MainMenu::menuStartSinglePlayer(CCObject* pSender)
{
    boo_startgame=true;
    CCDirector *pDirector = CCDirector::sharedDirector();
    pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());

    // create a scene. it's an autorelease object
    CCScene *pScene = HelloWorld::scene();

    // run
    pDirector->pushScene(pScene);
}

但是在我的helloworldscene.cpp文件中,它被设置为false。

#include "HelloWorldScene.h"
bool boo_startgame;

bool HelloWorld::init()
        {
               CCLog(boo_startgame ? "boo_startgame=true" : "boo_startgame=false");
               if (boo_startgame==true)
                   {
                     int_dealer=(arc4random() % 4);
                   }
    ....}

无论出于何种原因,if语句中的部分永远不会触发,所以我知道这不是我的CCLog代码搞乱了。这是怎么回事?

1 个答案:

答案 0 :(得分:-1)

如果可以在一个执行线程中修改并在另一个执行线程中进行测试,则可以尝试将布尔值声明为volatile bool boo_startgame