2014-05-25 3 views
1

iOS 7 용 Sprite Kit에 약간 문제가 있습니다. 내가 원하는 것은 단순히 게임을 일시 중지하는 것입니다. 문제는 게임을 일시 중지 한 후에 화면에 여러 개의 버튼 (다시 시작, 종료 등)을 넣고 애니메이션을 사용해야하기 때문에 self.paused 또는 self.view.paused 속성을 사용할 수 없다는 것입니다. (장면이나 뷰가 일시 중지 된 경우에는 불가능 함). Sprite Kit에서 게임 일시 중지

나는 다음과 같은 시도 : 완벽하게 게임을 일시 정지

[self enumerateChildNodesWithName:@"*" usingBlock:^(SKNode *node, BOOL *stop) { 
    node.paused = YES; 
}]; 
[self physicsWorld].speed = 0.0; 

을 ..., 그리고 (나는에서 해당 코드를 붙여하지 않습니다, 꽤 자기 explanetory의) 아주 쉽게 되돌릴 수 있습니다. 이 방법은 게임이 완벽하게 동결되어 있으며, 애니메이션으로 일부 버튼을 계속 넣을 수 있습니다. 좋은.

유일한 문제는 앱을 배경으로 보내고 (홈 버튼을 누름으로써) 앱을 다시 보낼 때마다 게임이 일시 중지되지 않는다는 것입니다. 배경). 어쨌든 노드가 자신의 paused 속성이 앱이 백그라운드로 들어가면 YES으로 설정되었다는 사실을 "잊어 버린"것처럼 보입니다. 나는 노드의 paused 재산을 보내고 NSLog을 시도하고 이것은 내가 무엇을 얻을 수 있습니다 : (

0 게임이

1을 실행하면 응용 프로그램이 배경에 보낼 때 코드 때문에 내가 [self pauseGame]를 호출 시도 앱을 다시 (???)

을 때 나는 1)

0으로 세트에게 그것을 붙여 (이전에 붙여 넣은 코드가있는 내 자신의 메서드) 응용 프로그램을 다시 활성화 할 때 (- (void)applicationDidBecomeActive:(UIApplication *)application)하지만 도움이되지 않았다. 흥미 롭습니다 ... 앱이 활성화 된 후에도 일시 중지 메소드를 호출한다고해서 게임이 일시 중지되지 않고 계속 실행됩니다.

누군가가 뭔가를 알고 있다면 정말 도움이됩니다.

감사합니다,

아담

+1

enumerateChildNodesWithName에'node.speed = 0.0;'를 추가 할 수 있습니다. –

+0

좋아요, 시도해 봅니다. – adam10603

+0

작동합니다.이 방법으로도 * node.paused' * 작업이 필요 없습니다. 고마워 친구. 대답으로 추가하십시오! – adam10603

답변

1

변경이 :

[self enumerateChildNodesWithName:@"*" usingBlock:^(SKNode *node, BOOL *stop) { 
    node.paused = YES; 
}]; 

이 사람 :

[self enumerateChildNodesWithName:@"*" usingBlock:^(SKNode *node, BOOL *stop) { 
    node.speed = 0.0; 
}]; 

으로 당신이 보장되는 0으로 속도를 설정 심지어 노드의 행동 경우 처리중인 경우 아무 것도 발생하지 않습니다. 어떤 이유 때문에, node.paused은 앱이 백그라운드로 보내질 때 다음 프레임을 렌더링 할 때 SpriteKit가 해당 노드를 건너 뛰지 않아서 게임을 일시 중지하지 않았습니다.

+0

당신은'노드를 유지하도록 선택할 수 있습니다.거기에서 멈췄다. –

+0

그래, 아마 안전을 위해해야 ​​해. 그것은 게임을 매우 일시 중지 시켰습니다. 감사! – adam10603

관련 문제