C++ Blackberry的Cocos2d-x中的变量值丢失

C++ Blackberry的Cocos2d-x中的变量值丢失,c++,cocos2d-x,C++,Cocos2d X,我在黑莓Playbook上使用Cocos2d-x。我试图在屏幕上居中放置一个jpeg,但我用来获取屏幕大小的变量不知何故最终为0。即使我可以在加载和定位jpeg之前确认它不是零。my init函数中的代码如下: bool MyScene::init() { if ( !CCLayer::init() ) { return false; } CCSize size = CCDirector::sharedDirector()->getWinSize

我在黑莓Playbook上使用Cocos2d-x。我试图在屏幕上居中放置一个jpeg,但我用来获取屏幕大小的变量不知何故最终为0。即使我可以在加载和定位jpeg之前确认它不是零。my init函数中的代码如下:

bool MyScene::init() {

    if ( !CCLayer::init() ) {
        return false;
    }

    CCSize size = CCDirector::sharedDirector()->getWinSize();

    bg = CCSprite::create("2.jpg");
    bg->setPosition(ccp( size.width/2 , size.height/2 ));
    this->addChild(bg); 

    fg = CCSprite::create("hud2.png");
    fg->setPosition(ccp( size.width/2 , 25 ));
    this->addChild(fg);

    fg2 = CCSprite::create("hud.png");
    fg2->setPosition(ccp( size.width/2 , size.height - 30 ));
    this->addChild(fg2);

    std::stringstream stream;
    stream << "size is " << (size.width/2) << "and " (size.height/2);
    std::string outtext = stream.str();

    label = CCLabelTTF::create(outtext.c_str(), "DejaVuSansMono.ttf", 25, CCSizeMake(size.width, 25), kCCTextAlignmentCenter);
    label->setPosition(ccp( size.width/2 , 28 ));
    this->addChild(label);
}

如果我运行,标签将打印出大小为0,JPEG在左下角,而不是中间的中心。然而,如果我加载一个png而不是jpeg,一切正常。让我更加困惑的是,如果我将用“size”值填充字符串的代码移到设置“size”的代码的右下方,那么一切都会正常工作。如果我把代码放在其他地方,或者完全去掉,“大小”大概会回到0,jpeg不会居中。这个问题只发生在黑莓手机上,但似乎“大小”设置正确,所以我不知道这是一个cocos2d-x错误。会不会有一些编译器的怪癖把事情搞砸了,或者仅仅是一些我遗漏的、其他编译器更能原谅的简单错误

为了进一步混淆,我有另一个应用程序,其中后台设置在一个单独的函数initBackground中,该函数从主init函数调用。在该应用程序中,即使我手动将背景位置设置到屏幕中间,背景也会定位错误。高度是正确的,但是如果我将x位置设置为160,它的行为就像我将其设置为0一样,并且只有一半的图像显示


我不介意深入研究cocos2d-x代码,但如果您能提供任何关于从何处开始查找的提示,我将不胜感激

我意识到这是一篇老文章,但我会尝试给出一些建议,以防其他人有类似的问题。从你的问题来看,我想一个可能会影响图像定位的变量是主播点值。也许出于某种原因,您的“anchorpoint”设置为不同的值,即图像的中心0.5,0.5

锚点的值范围为0.0到1.0%到100%。如果具有纹理的节点的默认锚点为0.5x0.5,则纹理位于节点位置的中心。如果锚点为0x0,则纹理的左下角将与节点的位置对齐。如果锚点为1x1,则纹理的右上角将与节点的位置对齐。这使得anchorPoint在涉及到左对齐、右对齐、上对齐或下对齐节点时最受欢迎。它最常用于对齐文本标签或将屏幕元素与屏幕边框对齐

你可以在这里了解更多关于主播的信息

关于变量被重置为零,我想这些行可能会有一些问题。。 std::stringstream; 流动