게임이 끝날 때 이미지가 화면을 벗어날 때 gameOver 사운드가 멈추지 않습니다. 게임이 끝나고 메뉴가 표시 되더라도 updateOn 메서드는 update 메서드에 의해 계속 호출됨을 보여줍니다. 무슨 일이 일어나고 있는지 이해하시기 바랍니다. 이것을 막으려면 어떻게해야합니까?gameOver 사운드가 멈추지 않습니다.
편집 : && !gameEnds
(아래의 업데이트 방법 참조)을 추가 한 후 gameOver
메서드를 두 번 호출하면 모든 숫자 중에서 두 번 호출되는 이유가 궁금합니다.
-(void)callNextImage: (UITapGestureRecognizer *)recognizer
{
self.counter++;
}
gameOver 방법은 이미지가 스크린과 탭의 개수 벗어날 때 호출한다 (사용자가 화면을 탭 때 self.counter 단위)
-(void)gameOver
{
self.gameEnds = YES;
// Play the gameOver sound
[self runAction:[SKAction playSoundFileNamed:@"gameOver.caf" waitForCompletion:NO]];
[mainLayer enumerateChildNodesWithName:@"Board" usingBlock:^(SKNode *node, BOOL *stop) {
[node runAction:[SKAction fadeOutWithDuration:1.0f]];
}];
[mainLayer enumerateChildNodesWithName:@"Time" usingBlock:^(SKNode *node, BOOL *stop) {
[node runAction:[SKAction fadeOutWithDuration:1.0f]];
}];
// showing the menu
[menu show];
}
이 방법은 탭 수를 카운트 4보다 작으며이 방법은 이와 관련이있는 것으로 보입니다.
-(void)update:(CFTimeInterval)currentTime {
/* Called before each frame is rendered */
if (self.counter < 4
&& (image.position.y > self.frame.size.height + 75.5f) && !gameEnds) {
[self gameOver];
}
}
디버거를 사용해 보셨습니까? – matt
@matt : 나는 그랬다. gameOver 메서드가 계속해서 호출되었다는 것을 보여준다. –
Excellent! 그러나 그것은 또한 당신에게'gameOver' 메소드를 반복적으로 호출하는 것을 보여줍니다. 따라서 문제의 원인을 쉽게 발견 할 수 있습니다. – matt