删除子图层时遇到小问题。我不确定如何正确删除图层。
这是我的代码示例
-(void)GoMoveFirst
{
//
//====HERE IS COMBOBOX START
CCMenuItemImage *lvl1 = newButton(@"retry1", 200, 590, self, @selector(onRetry));
CCMenuItemImage *lvl2 = newButton(@"retry1", 500, 590, self, @selector(onRetry)); //onHighScore:
CCMenuItemImage *lvl3 = newButton(@"retry1", 800, 590, self, @selector(onRetry));
CCMenu *menu = [CCMenu menuWithItems:lvl1, lvl2,lvl3, nil];
menu.position = ccp(0, 0);
[GameLayer addChild:menu z:103];
}
按下其中一个按钮后,我需要将其删除。 所有的东西都在这里:
-(void)onRetry
{
//
//HERE i need remove menu Child.
//
[m_sGo runAction:[CCSequence actions:actionMove, [CCCallFunc actionWithTarget:self selector:@selector(GoMoveSecond)], nil]];
}
一个想法是尝试让它看不见,但我不认为这是一个合适的选择。
答案 0 :(得分:1)
如果要删除CCSprite的子类(在本例中为CCMenuItemImage),则使用CCLayer类中的removeChild方法。在这种情况下:
-(void)onRetry{
[self removeChild:lvl1];//This would remove the CCMenuItemImage object called lvl1.
[m_sGo runAction:[CCSequence actions:actionMove, [CCCallFunc actionWithTarget:self selector:@selector(GoMoveSecond)], nil]];
}
答案 1 :(得分:1)
您需要存储对要移除的子项的引用(即@interface
中指向它的指针)。
我很确定你也可以分配一个CCNode
标签,所以可能值得研究一下。然后,您可以根据分配给它的标记删除节点。两者都是从父节点removeChild
访问的。