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対応 松浦 晃洋,齊藤 建二,古木 映治 秀和システム 売り上げランキング : 41015 Amazonで詳しく見る |