2016-10-26 3 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"); 

} 

問題である私は、ドキュメントに応じてノードを受け取りますが、Nodeクラスの一部がsetSelectedImageではありませんので、私に言って、エラーがあるgetChildByTag(0)メソッドを持つ彼の親からBTNを取得し、どのような正しい方法は、親からMenuSpriteItemsにアクセスし、通常の画像を変更して、この場合のようにそれらを操作するのですか?

ご挨拶。

答えて

0

私は答えを得て、それは本当に強力で簡単です。

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

これは男からの説明です:このコードは、タグ0との子供を取得し、それがMenuItemSprite *オブジェクトである場合MenuItemSprite *オブジェクトにそれを向けるだろう

、またはあれば、それはnullを返しますオブジェクトはMenuItemSprite *ではありませんでした。

誰かを助けることを願っています。ご挨拶

関連する問題