从图层中删除菜单的问题

时间:2011-06-08 09:05:08

标签: iphone cocos2d-iphone box2d

我在调用touchesMove函数时添加了一个菜单:

CCMenuItemImage * resetPosition =[CCMenuItemImage itemFromNormalImage:@"position.png" selectedImage: @"position_over.png"                              target:self
selector:@selector(reset:)]; 
resetPosition.position =ccp(400, 300);
myresetMenu = [CCMenu menuWithItems:resetPosition, nil];
myresetMenu.position = ccp(0,0);
[[self parent] addChild:myresetMenu z:10];
menuWithItems:resetPosition, nil];

然后在reset方法中,我将此菜单删除为:

- (void) reset: (CCMenuItem  *) menuItem 
{   
[self unschedule:@selector(reset:)];
[[self parent] removeChild:myresetMenu cleanup:YES];
[[SimpleAudioEngine sharedEngine] playEffect:@"btn_click.mp3"];
[self.parent runAction:[CCMoveTo actionWithDuration:(-self.parent.position.x/650) position:ccp(0,0)]];
}

myresetMenu也未删除。请帮助我。

3 个答案:

答案 0 :(得分:2)

不确定这是否是答案,但你将myrestmenu添加到父母两次,重置只删除一次。

答案 1 :(得分:1)

CCMenu 作为变量添加到拥有它的类中,而不是创建它。然后您可以随时添加或删除它。所以在您的界面文件中执行以下操作:

@interface myLayerClass : CCLayer {
CCMenu *myMenu;
}   

答案 2 :(得分:1)

我知道这不是我的问题的答案,但我已经以给定的方式实现了解决方案。

我通过以下方式实现了它:

if(diffX > 0)
{
[resetPosition runAction:[CCMoveTo actionWithDuration:round(-(-3112-self.parent.position.x)/650) 
                                                                 position:ccp((3112+self.position.x+400),resetPosition.position.y)]];
}
else
{
[resetPosition runAction:[CCMoveTo actionWithDuration:(-self.parent.position.x/650) 
                                                                 position:ccp(400,resetPosition.position.y)]];
}

- (void) reset
{   
CCLOG(@"reset Method Called");

[self.parent stopAllActions];
[resetPosition setIsEnabled:NO];
[resetPosition stopAllActions];

[[SimpleAudioEngine sharedEngine] playEffect:@"btn_click.mp3"];
[resetPosition runAction:[CCMoveTo actionWithDuration:.09f 
                                             position:ccp(400,300)]];   
[self.parent runAction:[CCMoveTo actionWithDuration:.09f position:ccp(0,0)]];
}

如果禁用,则使用透明小按钮。