无法将字符串变量传递给cocos2dx中的Sprite

时间:2017-05-20 09:29:29

标签: c++ cocos2d-x cocos2d-x-3.0

我在cocos2dx&中遇到了字符串问题。 C ++。我想将变量背景传递给Sprite::create(background)但是,我得到一个错误。如果是在java中,下面的代码将起作用,但由于我不熟悉C ++,它可能会有所不同。另外,如果它是一个int我将如何通过它?我怎么能解决这个问题?一些提示或样本将是伟大的!我很乐意听到你的消息!

void GameLayer::initBackground()
{
    UserDefault *_userDef = UserDefault::getInstance();
    //int型
    auto _int =_userDef->getIntegerForKey("back");
    auto string  background = "Background1.png";
    if (_int == 0) {
       background = "Background2.png";
    } 
    auto bgForCharacter = Sprite::create(background);
    bgForCharacter->setAnchorPoint(Point(0, 1));
    bgForCharacter->setPosition(Point(0, WINSIZE.height));
    addChild(bgForCharacter, ZOrder::BgForCharacter);

    auto bgForPuzzle = Sprite::create("Background2.png");
    bgForPuzzle->setAnchorPoint(Point::ZERO);
    bgForPuzzle->setPosition(Point::ZERO);
    addChild(bgForPuzzle, ZOrder::BgForPuzzle);
}

1 个答案:

答案 0 :(得分:2)

auto userDefault=UserDefault::getInstance();

int value=userDefault->getIntegerForKey("back"); //find value for back if exist then it return that value else return 0

auto sprite = Sprite::create(value==0?"Background2.png":"Background1.png");
sprite->setPosition(100, 100);
this->addChild(sprite, 0);

当您想要更改背景时,只需输入任何值而不是0

UserDefault::getInstance()->setIntegerForKey("back", 1);