【cocos2dx】CCMenuクラスでボタンを作るときの注意点

【cocos2dx】CCMenuクラスでボタンを作るときの注意点
   

ボタンやメニューを作る時に、非常に便利なクラスであるCCMenuクラスですが、利用する際にちょっとした注意点を発見したので、今回これを紹介します。

CCMenu

まずは、CCMenuは以下の様な形で利用することが多いでしょう。

    CCMenuItemImage *mItem1 = CCMenuItemImage::create(
                                        "Normal1.png",
                                        "Selected1.png",
                                        this,
                                        menu_selector(HelloWorld::menuCallback1));
    

    CCMenuItemImage *mItem2 = CCMenuItemImage::create(
                                        "Normal2.png",
                                        "Selected2.png",
                                        this,
                                        menu_selector(HelloWorld::menuCallback2));
    
    mItem1->setPosition(ccp(200,100));
    mItem2->setPosition(ccp(200,200));



    CCMenu* pMenu = CCMenu::create(mItem1,mItem2,NULL);
    pMenu->setPosition(CCPointZero);
    this->addChild(pMenu, 1);


2013 7 18 menu1

注意点

注意点は、個別のメニュー(上記の例ですとmItem1,mItem2)にアクセスができないことです
2013 7 18 menu2


例えば、メニューを追加後に、個別の「mItem2」だけ画像を表示させないようにすることができません。

   //このような処理はできません。
   mItem2-> setVisible(false);

  
  //ただし、メニュー全体を表示させなくすることはできます。
  pMenu-> setVisible(false);




作成するゲームの構造上、ボタンを個別に操作する場合は、メニューを個別のボタンごとに作成するか、CCSprite自体にタッチ処理を実装するようにしなくてはいけません。
皆さんご注意下さい。


[追記 7/18】

この注意点は、cocos2dxのバージョン2.1.3を利用した際に出たものです。
最新のバージョンでこの問題が解決しているという報告を受けています。
現在、利用しているcocos2dのバージョンに注意をしてください。

Related Posts Plugin for WordPress, Blogger...