我在调用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
也未删除。请帮助我。
答案 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)]];
}
如果禁用,则使用透明小按钮。