CCButton не работает полностью при нажатии в iOS Cocos2D v3
У меня есть геймплей scene
, над которым я добавляю CCNode
как ребенок. У узла "Моя игра окончен" есть повтор CCButton
в этом.
Кнопка должна перезапустить игровую сцену. Проблема в том, что, когда я нажимаю кнопку "Перезагрузка", она проходит по линиям, но не replaceScene
, Также не подсвечивается при нажатии. Вот мой соответствующий код:
Код, куда я добавляю Game Over Node
в моем классе GamePlay (.m):
CCNode GameOver = [[GameOverNode alloc] init];
[self unscheduleAllSelectors];
[self stopAllActions];
[[OALSimpleAudio sharedInstance] stopBg];
[[CCDirector sharedDirector] stopAnimation];
[[CCDirector sharedDirector] pause];
[self addChild:GameOver z:5];
и вот код для класса GameOver (.h):
@interface GameOverNode:CCNode {
CCButton *_aButton;
}
@property (nonatomic, retain) CCButton *aButton;
- (id)init;
- (void)ButtonPressed:(id)sender;
и игра окончена (.m):
-(id)init {
if ( self = [super init] ){
CCSpriteFrame *replayFrame = [CCSpriteFrame frameWithImageNamed:@"Replay.png"];
_aButton = [CCButton buttonWithTitle:@"" spriteFrame:replayFrame];
_aButton.position = ccp(200,200);
[_aButton setTarget:self selector:@selector(ButtonPressed:)];
[self addChild:_aButton z:2];
}
return self;
}
- (void)ButtonPressed:(id)sender
{
NSLog(@"Button pressed");
CCTransition* t = [CCTransition transitionFadeWithDuration:0.4f];
t.outgoingSceneAnimated = YES;
t.incomingSceneAnimated = YES;
[[CCDirector sharedDirector] replaceScene:[GamePlayScene scene] withTransition:t];
}
Дело в том, что он печатает "Нажатие кнопки", также проходит через весь код метода, но ничего не происходит.
Я буду признателен, если вы дадите мне знать, что я делаю неправильно.
Спасибо!
1 ответ
Это не работает, потому что вы приостановили CCDirector. Удалите следующую строку:
[[CCDirector sharedDirector] pause];
В качестве альтернативы, если вам это действительно нужно, возобновите режиссер, прежде чем пытаться заменить сцену.
[[CCDirector sharedDirector] resume];
[[CCDirector sharedDirector] replaceScene:[GamePlayScene scene] withTransition:t];