【cocos2dx】CCMenuクラスの一歩進んだ使い方2

cocos2dxでは、CCMenuクラスを利用すれば簡単にボタンが作成できます。 私が今作っているアプリでも使っています。 2回目なのですが、このCCMenuクラスを少し深く勉強してみましょう。 【cocos2dx2.2を利用しています。

前回:【cocos2dx】CCMenuクラスの一歩進んだ使い方。 | albatrus.com

メニューのアニメーション

CCSpriteクラスと同じように、CCMenuItemSpriteクラスでのCCActionが利用できます。 これを利用すれば、動いているメニューを実装することができます。

】 [c]

CCMenuItemSprite *_menuItem = CCMenuItemSprite::create(menuItem1, menuItem2, this, menu_selector(MainLayer::menuAction));
CCScaleTo *scale = CCScaleTo::create(0.1f, 0.9f);
CCScaleTo *scale2 = CCScaleTo::create(0.1f, 1.05f);
CCScaleTo *scale3 = CCScaleTo::create(0.05f, 1.00f);
CCSequence*seq = CCSequence::create(scale,scale2,scale3,NULL);
CCRepeatForever *req = CCRepeatForever::create(seq);
_menuItem->runAction(req);

[/c]

なお、CCMenuItemSpriteクラスに指定するCCSprite型の変数もCCActionが利用できるが、アンカーポイントに違いがあるので動きに注意をしてください。

透明なメニュー

メニューを常に表示させるのではなく、「表示・非表示」をどのように切り替えてますか。 この場合は、setVisible(bool型)を利用すれば簡単に実装ができます。

[c]

 CCMenu *_menu;
 _menu->setVisible(false);

[/c]

このsetVisible(bool型)に関しては,CCMenuItemクラス個別に指定もできます。 すべてのメニューを非表示にする時には、CCMenuクラスに、個別に非表示にする際にはCCMenuItemクラスに実装をしましょう。

setOpacity()

表示・非表示」では、setOpacity()も利用することができます。 こちらに関しては、半透明にもできたりします。

ただ、一番の特徴は完全に透明にしてもメニューとして利用できることです。

これを利用すれば、「何もない所を触って何かアクションを起こしたりする」ことが簡単にできます。 [c]

 CCMenuItemSprite *_menuItem;
 _menuItem->setOpacity(0);

[/c]

メニューの画像を変更する

メニューで利用しているCCSpriteクラスの画像を途中で変更します。 これは、通常のCCSpriteで利用している方法が使えますが、どのSpriteを変えるかを取り出すのがとても苦労します。

下準備として、CCMenu・CCMenuItemSpriteクラスにタグを割り振っておきます。 [c]

  CCMenu *_menu;
  _menu->setTag(100);

  CCMenuItemSprite *menuItem; menuItem->setTag(1);

[/c]

これを元にしてCCSpriteを取り出し、変更します。 [c]

  CCMenu *menu = (CCMenu*)this->getChildByTag(100);
  if (menu) {

      CCMenuItemSprite * item = (CCMenuItemSprite*)menu->getChildByTag(1);

      if (item) {

        CCSprite *sprite = (CCSprite*)item->getNormalImage();
        if (sprite) {

            CCSpriteFrame *frame =CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("change-sprite-name.png");
            sprite->setDisplayFrame(frame);


        }
      }
   }

[/c]

最後に

実装は面倒ですが、CCMenuを使えば、かなり自由にできるようになりますので、ぜひ参考にしてみてください。

上記内容と関係ないのですが、現在ブログが非常に不安定で、一部プラグインが使えずに画面が見難くなっています。 大変申し訳ありません。

Cocos2d‐x開発のレシピ―iOS/Android対応Cocos2d‐x開発のレシピ―iOS/Android対応
松浦 晃洋,齊藤 建二,古木 映治

秀和システム
売り上げランキング : 41015

Amazonで詳しく見る