Iphone 从图层中删除菜单时出现问题

Iphone 从图层中删除菜单时出现问题,iphone,cocos2d-iphone,box2d,Iphone,Cocos2d Iphone,Box2d,我在调用touchesMovefonction时添加了一个菜单: CCMenuItemImage * resetPosition =[CCMenuItemImage itemFromNormalImage:@"position.png" selectedImage: @"position_over.png" target:self selector:@selector(reset:)]; resetPosition.position =

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

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
也没有被删除。请帮助我完成它。

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

@interface myLayerClass : CCLayer {
CCMenu *myMenu;
}   

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

@interface myLayerClass : CCLayer {
CCMenu *myMenu;
}   

不确定这是否是答案,但您将myrestmenu添加到父级两次并重置只会删除一次

不确定这是否是答案,但您将myrestmenu添加到父菜单两次并重置只会删除一次

我知道这并不完全是我问题的答案,但我已经以某种方式找到了答案

那么我是通过以下方式来实现的:

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)]];
}

在禁用的情况下,会使用一个透明的小按钮。

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

那么我是通过以下方式来实现的:

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)]];
}

在禁用的情况下,会使用一个透明的小按钮。

我已经这样做了:这里myresetMenu是CCMenu,我已经在.h文件中定义了。我已经这样做了:这里myresetMenu是CCMenu,我已经在.h文件中定义了只是复制错误。:)你在哪里创建菜单?它是在一层吗?如果是这样的话,为什么不直接将其添加到图层中,而不是添加到其父图层中呢?只需[self addchild:menu z:10]和[self removechild:menu cleanup:yes]。还有,为什么您要在reset:中传递一个菜单项,并且似乎没有使用它?什么是[自我计划外:@selector(reset:)];对于不太确定在这种情况下的用途。很抱歉,这些问题只是为了解决问题。这只是复制错误。:)你在哪里创建菜单?它是在一层吗?如果是这样的话,为什么不直接将其添加到图层中,而不是添加到其父图层中呢?只需[self addchild:menu z:10]和[self removechild:menu cleanup:yes]。还有,为什么您要在reset:中传递一个菜单项,并且似乎没有使用它?什么是[自我计划外:@selector(reset:)];对于不太确定在这种情况下的用途。很抱歉,我只是想回答问题。