проблема с удалением меню из слоя - PullRequest
1 голос
/ 08 июня 2011

Я добавил меню, когда 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 ]

2 голосов
/ 09 июня 2011

не уверен, что это ответ, но вы добавляете myrestmenu к родителю дважды, а reset удаляет его только один раз.

1 голос
/ 13 июня 2011

Я знаю, что это не совсем ответ на мой вопрос, но я нашел решение заданным способом.

Хорошо, я реализовал его следующим образом:

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

А в случае отключения используется прозрачная маленькая кнопка.

1 голос
/ 08 июня 2011

Добавьте CCMenu в качестве переменной к классу, которому он принадлежит, вместо его создания. Затем вы можете добавить или удалить его, когда захотите. Так что в вашем файле интерфейса сделайте что-то вроде:

@interface myLayerClass : CCLayer {
CCMenu *myMenu;
}   
...