2016-10-26 7 views
0

У меня есть кнопка, которая должна быть кнопкой переключения звука игры. Я использую класс MenuSpriteItem.Как изменить изображение MenuSpriteItem 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"); 

} 

Проблема заключается в том, что получение БТНЫ от своего родителя с getChildByTag (0) методом я получаю узел в соответствии с документацией, но setSelectedImage не является частью класса Node и есть ошибка говорит мне, так, так что это правильный способ доступа к MenuSpriteItems из своих родителей, а затем манипулировать ими, как в этом случае, изменив Normal Image?

Приветствия.

ответ

0

У меня есть ответ, и это действительно мощный и простой.

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

Это объяснение от парня:

Этот код будет получить ребенка с тегом 0 и превратить его в MenuItemSprite * объект, если это MenuItemSprite * объект, или он возвращает пустое значение, если объект не был MenuItemSprite *.

Надеюсь, это поможет кому-то. Приветствую.