【cocos2dx】CCMenuクラスで「ON・OFFボタン」を作成する

音楽の出るアプリでは、音を鳴らす鳴らさないの調整ができれば、いちいちスマートフォンの音量を触らなくてもいいです。 今回は、そのような機能をCCMenuクラスにあるCCMenuItemToggleクラスの利用方法を紹介します。

「ON・OFFボタン」を実装する

まずは、通常のメニューと同じように、ボタンのスプライトを用意します。 ただ、一つのボタンに対して、4つ画像を用意しなくてはいけません。

  • ボタンがONの時の画像
  • ボタンがONの時に押された時の画像
  • ボタンがOFFの時の画像
  • ボタンがOFFの時に押された時の画像

それぞれ画像を用意するか、もしくは画像をsetColor()などを使って色を変えるかなどします。 このような感じで用意します。

ONOF

[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クラスを使ってONOFFのボタンを作成します。 [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]

これで完成です。 このような感じのボタンになります。

2013-9-9-ffds.png