0

私を助けてください、cocos2d-x の初心者です。私はアイテムのリストを持っています。CCMenu::createWithArray を使用して、最後にこのリストを表示するために、アイテムの配列を使用してこれを行うにはどうすればよいですか? メニュー配列を制御して、配列からアイテムを追加/ドロップします(リストメニューから)。

コードは次のとおりです。

`` ...

CCLabelTTF* pp0BtnLabel = CCLabelTTF::create( string(ItemName[0]).c_str(), "Arial", TITLE_FONT_SIZE);   
CCMenuItemLabel *pp0Item = CCMenuItemLabel::create(
            pp0BtnLabel,
            this,
            menu_selector(Window::CheckItemCallback));
pp0Item->setTag(ItemTag[0]);    
CC_BREAK_IF(! pp0Item);
pp0Item->setPosition(ccp(size.width*0.3f, size.height*0.8));

CCLabelTTF* pp1BtnLabel = CCLabelTTF::create( string(ItemName[0]).c_str(), "Arial", TITLE_FONT_SIZE);   
CCMenuItemLabel *pp1Item = CCMenuItemLabel::create(
            pp1BtnLabel,
            this,
            menu_selector(Window::CheckItemCallback));
pp1Item->setTag(ItemTag[0]);    
CC_BREAK_IF(! pp1Item);
pp1Item->setPosition(ccp(size.width*0.3f, size.height*0.75));

CCLabelTTF* pp2BtnLabel = CCLabelTTF::create( string(ItemName[0]).c_str(), "Arial", TITLE_FONT_SIZE);   
CCMenuItemLabel *pp2Item = CCMenuItemLabel::create(
            pp2BtnLabel,
            this,
            menu_selector(Window::CheckItemCallback));
pp2Item->setTag(ItemTag[0]);    
CC_BREAK_IF(! pp2Item);
pp2Item->setPosition(ccp(size.width*0.3f, size.height*0.7));

CCMenu* pMenuChapter = CCMenu::create(pp0Item, pp1Item, pp2Item, NULL);
pMenuChapter->setPosition(CCPointZero);
CC_BREAK_IF(! pMenuChapter);

this->addChild(pMenuChapter, 1);

            ...

``

4

1 に答える 1

0

私はあなたの質問を理解することはできません... しかし、CCArray を使用して CCMenu を作成する方法は次のとおりです。

CCLabelTTF*label = CCLabelTTF::create("label text", "Arial", 32);

CCMenuItemLabel *item1 = CCMenuItemLabel::create(label, this, menu_selector(CPhysicsLayer::itemCallback));
CCMenuItemLabel *item2 = CCMenuItemLabel::create(label, this, menu_selector(CPhysicsLayer::itemCallback));
CCMenuItemLabel *item3 = CCMenuItemLabel::create(label, this, menu_selector(CPhysicsLayer::itemCallback));

CCArray*array = CCArray::create(item1, item2, item3);
CCMenu*menu = CCMenu::createWithArray(array);

/// Iterate over the menu items
CCObject*obj = NULL;
CCARRAY_FOREACH(array, obj) {
    CCMenuItemLabel*item = (CCMenuItemLabel*)obj;
    /// Do something with the item...
}

「実行時」に項目をメニューに追加するには、CCMenu::addChild メソッド (および removeChild を使用して項目を削除します) を使用します。

それが役に立てば幸い。

于 2013-02-16T08:05:24.093 に答える