2016-10-26 7 views
0

Ich habe einen Knopf, den ich eine Umschalttaste für den Klang eines Spiels sein muss. Ich verwende die MenuSpriteItem-Klasse.Wie man das Bild eines MenuSpriteItems ändert Cocos2d-x C++

auto menuSoundOn = Sprite::createWithSpriteFrameName("soundOn.png"); 
auto menuSoundOff = Sprite::createWithSpriteFrameName("soundOff.png"); 
auto menuSoundBtn = MenuItemSprite::create(menuSoundOn, menuSoundOff, CC_CALLBACK_1(LevelsLayer::shutSound, this)); 
menuSoundBtn->setTag(0); 

_mainMenu = Menu::create(menuSoundBtn, nullptr); 
this->addChild(_mainMenu); 

//Then in my shutSound method 
auto menuSoundBtn = _mainMenu->getChildByTag(0); 
if (_ifSound){ 
    _ifSound = false; 
    //Do some stuff to shut the sound 
    menuSoundBtn->setSelectedImage("noSound.png"); 

} 
else{ 

    _ifSound = true; 
    //Do some stuff to bring the sound back 
    menuSoundBtn->setSelectedImage("sound.png"); 

} 

Das Problem ist, dass die Btn von seinem Elternteil mit getChildByTag (0) Methode bekommt ich einen Knoten nach der Dokumentation erhalten, aber setSelectedImage ist nicht Teil der Node-Klasse und es ist ein Fehler, mich so zu sagen, Was ist der richtige Weg, um von ihren Eltern auf MenuSpriteItems zuzugreifen und sie dann wie in diesem Fall zu manipulieren, indem Sie das normale Bild ändern?

Grüße.

Antwort

0

Ich habe die Antwort und es ist wirklich mächtig und einfach.

auto menuSoundBtn = dynamic_cast<MenuItemSprite*>(_mainMenu->getChildByTag(0)); 

Dies ist die Erklärung vom Typ:

Dieser Code wird das Kind mit dem Tag 0 und schalten Sie ihn in eine MenuItemSprite bekommen * Objekt, wenn es ein MenuItemSprite * Objekt ist, oder es gibt null zurück, wenn die Objekt war kein MenuItemSprite *.

Ich hoffe, es hilft jemandem. Schöne Grüße.

Verwandte Themen