2017-05-20 1 views
0

Ich habe ein Problem mit den Zeichenfolgen in cocos2dx & C++. Ich möchte den variablen Hintergrund an Sprite::create(background) übergeben, aber ich erhalte einen Fehler. Wenn es in Java war, wird der folgende Code funktionieren, aber da ich nicht an C++ gewöhnt bin, kann es anders sein. Plus, wenn es ein int war, wie werde ich es weitergeben? Wie kann ich das lösen? Einige Tipps oder Proben werden großartig sein! Ich werde es lieben, von dir zu hören!Konnte die Zeichenfolgenvariable in cocos2dx nicht an Sprite übergeben

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); 
} 

Antwort

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); 

Wenn Sie Ihren Hintergrund ändern, nur einen beliebigen Wert setzen, anstatt 0

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