nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

cocos2d-x で CCMenu のコールバックメソッドにパラメータを渡すには

はじめに

  • CCMenu でメニューを作る際に、メニューアイテムの数だけコールバックメソッドを書いているのが間抜けすぎたので、メニューのコールバックメソッドにパラメータを渡す方法を調べた。

コード

メニューアイテムの作成
  • "MenuScene"という名前のシーンでメニューの作成
	// メニューアイテムの作成
    CCLabelTTF* label = CCLabelTTF::create("button", FONT_NAME, FONT_SIZE);
    CCMenuItemLabel* menuItem
    	= CCMenuItemLabel::create(label, this, menu_selector(MenuScene::menuCallback));
    menuItem->setPosition(ccp(size.width * 0.2, size.height * 0.7));
    // コールバック側で読み込む値をタグにセットする
    menuItem->setTag(1);
コールバックメソッドの実装
void MenuScene::menuCallback(CCObject *sender)
{
    CCMenuItem* menuItem = (CCMenuItem*)sender;
    int tag = menuItem->getTag();
    
    /* なにか tag を使った処理 */
}