所以我试图在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代码搞乱了。这是怎么回事?
答案 0 :(得分:-1)
如果可以在一个执行线程中修改并在另一个执行线程中进行测试,则可以尝试将布尔值声明为volatile bool boo_startgame
。