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