cocos2d создание динамических списков меню - PullRequest
0 голосов
/ 27 февраля 2012

Как создать список CCMenuItem динамически?

//Returns me an array with my items
Items *items = [ItemParser loadItemsForLevel:selectedLevel fromSuperLevel:selectedSuperLevel];

Для элемента у меня есть строка с названием элемента, которую я хотел бы отобразить в моем CCMenu. Количество элементов может варьироваться, но я хочу отображать только 6 элементов одновременно

а как мне его убрать? Я очищаюсь от CCLayer, но я бы хотел сделать это также из списка меню

Любой

1 Ответ

1 голос
/ 27 февраля 2012

Cocos2D не предоставляет метод для этого.

Вы можете создать свой собственный инициализатор, основанный на оригинальном инициализаторе, найденном в "CCMenu.m".Оригинал выглядит следующим образом (я удалил код, который не добавляет элементы для ясности).Создайте свой собственный метод init, основанный на оригинале, и вместо этого добавьте переменное количество элементов.При желании вы также можете установить его в качестве категории в CCMenu.

-(id) initWithItems: (CCMenuItem*) item vaList: (va_list) args
{
    if( (self=[super init]) ) {

        // ... code cut for clarity

        if (item) {
            [self addChild: item z:z];
            CCMenuItem *i = va_arg(args, CCMenuItem*);
            while(i) {
                z++;
                [self addChild: i z:z];
                i = va_arg(args, CCMenuItem*);
            }
        }

        // ... code cut for clarity

    }

    return self;
}

Обновление: Когда ваши пункты меню изменятся, перестройте все меню.

...