音楽の出るアプリでは、音を鳴らす鳴らさないの調整ができれば、いちいちスマートフォンの音量を触らなくてもいいです。
今回は、そのような機能をCCMenuクラスにあるCCMenuItemToggleクラスの利用方法を紹介します。
「ON・OFFボタン」を実装する
まずは、通常のメニューと同じように、ボタンのスプライトを用意します。ただ、一つのボタンに対して、4つ画像を用意しなくてはいけません。
- ボタンがONの時の画像
- ボタンがONの時に押された時の画像
- ボタンがOFFの時の画像
- ボタンがOFFの時に押された時の画像
それぞれ画像を用意するか、もしくは画像をsetColor()などを使って色を変えるかなどします。
このような感じで用意します。
1 2 3 4 5 6 7 |
CCSprite *OnButton= CCSprite::create("sound0n.png"); CCSprite *OnButton2= CCSprite::create("sound0n.png"); CCSprite *OffButton= CCSprite::create("sound0ff.png"); CCSprite *OffButton2= CCSprite::create("sound0ff.png"); OnButton ->setColor(ccc3(169,169,169)); OffButton ->setColor(ccc3(169,169,169)); |
ボタンを作成する
まずは、CCMenuItemSpriteクラスを使ってONとOFFのボタンを作成します。
1 2 3 4 5 |
//ONのボタン CCMenuItemSprite *menuImage1 = CCMenuItemSprite::create(OnButton, OnButton2,NULL); //OFFのボタン CCMenuItemSprite *menuImage2 = CCMenuItemSprite::create(OffButton, OffButton2,NULL); |
この2つのボタンを「ON・OFFボタン」にするために、CCMenuItemToggleクラスを利用します。
2つボタンが用意できれば、簡単に作成できます。
1 |
CCMenuItemToggle *toggle = CCMenuItemToggle::createWithTarget(this, menu_selector(OpeningLayer::toggleAction), menuImage1,menuImage2,NULL); |
CCMenuItemImageクラスと同じように、ボタンを押した時に呼び出すメソッドを指定できるのですが、順番が少し違いますので注意して下さい。
後は、Positionを設定して、CCMenuクラスを作成すれば完成です。
1 2 3 4 5 6 7 8 |
//ボタンの場所 toggle->setPosition(100,100); //メニューを作成 CCMenu *soundButton = CCMenu::create(toggle,NULL); soundButton->setPosition(CCPointZero); this->addChild(soundButton); |
これで完成です。
このような感じのボタンになります。
