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. В вашем случае это было совершенно бесполезно.