cocos2dxでは、CCMenuクラスを利用すれば簡単にボタンが作成できます。
私が今作っているアプリでも使っています。
2回目なのですが、このCCMenuクラスを少し深く勉強してみましょう。
【cocos2dx2.2を利用しています。】
前回:【cocos2dx】CCMenuクラスの一歩進んだ使い方。 | albatrus.com
メニューのアニメーション
CCSpriteクラスと同じように、CCMenuItemSpriteクラスでのCCActionが利用できます。これを利用すれば、動いているメニューを実装することができます。
【例】
1 2 3 4 5 6 7 |
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); |
なお、CCMenuItemSpriteクラスに指定するCCSprite型の変数もCCActionが利用できるが、アンカーポイントに違いがあるので動きに注意をしてください。
透明なメニュー
メニューを常に表示させるのではなく、「表示・非表示」をどのように切り替えてますか。この場合は、setVisible(bool型)を利用すれば簡単に実装ができます。
1 2 |
CCMenu *_menu; _menu->setVisible(false); |
このsetVisible(bool型)に関しては,CCMenuItemクラス個別に指定もできます。
すべてのメニューを非表示にする時には、CCMenuクラスに、個別に非表示にする際にはCCMenuItemクラスに実装をしましょう。
setOpacity()
「表示・非表示」では、setOpacity()も利用することができます。こちらに関しては、半透明にもできたりします。
ただ、一番の特徴は完全に透明にしてもメニューとして利用できることです。
これを利用すれば、「何もない所を触って何かアクションを起こしたりする」ことが簡単にできます。
1 2 |
CCMenuItemSprite *_menuItem; _menuItem->setOpacity(0); |
メニューの画像を変更する
メニューで利用しているCCSpriteクラスの画像を途中で変更します。これは、通常のCCSpriteで利用している方法が使えますが、どのSpriteを変えるかを取り出すのがとても苦労します。
下準備として、CCMenu・CCMenuItemSpriteクラスにタグを割り振っておきます。
1 2 3 4 5 |
CCMenu *_menu; _menu->setTag(100); CCMenuItemSprite *_menuItem; _menuItem->setTag(1); |
これを元にしてCCSpriteを取り出し、変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
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); } } } |
最後に
実装は面倒ですが、CCMenuを使えば、かなり自由にできるようになりますので、ぜひ参考にしてみてください。上記内容と関係ないのですが、現在ブログが非常に不安定で、一部プラグインが使えずに画面が見難くなっています。
大変申し訳ありません。
![]() | Cocos2d‐x開発のレシピ―iOS/Android対応 松浦 晃洋,齊藤 建二,古木 映治 秀和システム 売り上げランキング : 41015 Amazonで詳しく見る |
