Cocos2D как удалить / освободить / очистить CCMenu

Как я могу добавить / удалить CCMenu при нажатии той же кнопки? Я добавил немного кода..

Заранее спасибо..

CCMenu *menu;


    if (!isMenuVisible) {

           CCMenuItemSprite *item = [CCMenuItemSprite itemFromNormalSprite: .......];
           menu = [CCMenu menuWithItems:item, nil];
           [self addChild:menu];

} else {

           // [menu cleanup];/// didn't work
           // [menu removeFromParentAndCleanup:YES]; //// didnt work
           // [menu removeAllChildrenWithCleanup:YES];  //// didn't work

}

    isMenuVisible = !isMenuVisible;


}

2 ответа

Решение

Вы, вероятно, хотите иметь верхнюю строку в вашем.h файле, делая меню iVar, чтобы ссылка сохранялась между последовательными выполнениями этого кода. Установите меню на ноль после его удаления.

Один из способов - создать два меню. Одна для кнопки "показать / скрыть", другая для всех кнопок, которые должны быть показаны / скрыты. Это не хороший способ.

Другой способ - просто добавить / удалить элементы меню в меню. Я имею в виду что-то подобное:

- (void) removeItems
{
    for(CCNode* item in _addedItems)
    {
        [item removeFromParentAndCleanup: YES];
    }

    [_addedItems removeAllObjects];
}

- (void) addItems
{
    // create needed items and add them as children 
    // to your menu and add them to _addedItems array
    // to be able to remove added objects
}

Также перед использованием таких методов, как cleanup, проверьте его код или хотя бы документацию по cocos2d. В вашем случае это было совершенно бесполезно.

Другие вопросы по тегам