2015-01-21 5 views
0

performrequest 취소하는 동안, 내가 지금처럼 사용자 작업 시간 (초)의 일정 금액 후 AVAudioPlayer를 사용하여 음성 해설을 재생 :iOS 용 : 오류의 iOS SpriteKit 응용 프로그램에서

[self.vOSoundManager performSelector:@selector(playVoiceOverWithName:) withObject:@"Voiceover_waarhondenbrokken3" afterDelay:8.0]; 
[self.vOSoundManager setRequestBeingPerformed:TRUE]; 

사용자가 다른 작업을 수행, 사운드가 재생되지 않아야합니다. 그래서 같이 이렇게 :

if(self.vOSoundManager.requestBeingPerformed){ 
      [NSObject cancelPreviousPerformRequestsWithTarget:self.vOSoundManager]; 
      [self.vOSoundManager stopCurrentSound]; 
     } 

VoiceOverSoundManager의 stopCurrentSound 방법 :

cancelPreviousPerformRequestsWithTarget 메서드를 호출 할 때, 나는 다음과 같은 오류 얻을
- (void)stopCurrentSound{ 
self.playing = FALSE; 
[self.voiceOverPlayer stop]; 
self.voiceOverPlayer = nil; 
} 

:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[VoiceOverSoundManager name]: unrecognized selector sent to instance 0x155a9590' 

나는 아무 생각을 왜. 누구든지 해결책이 있습니까?

self.voiceOverPlayer = nil; 

시도를 제거 : 당신이 당신의 게임에서 모든 사운드를 재생하는 플레이어의 한 인스턴스를 사용하는 경우

+0

AVAudioPlayer의 다른 인스턴스가 코드에 있거나 self.voiceOverPlayer가 모든 사운드를 재생하는 데 사용하는 유일한 플레이어입니까? – Whirlwind

+0

AVOudioPlayer를 사용하는 VoiceOverSoundManager의 다른 인스턴스를 사용하지만이 문제를 해결하기 위해 구현했습니다. 그래서 구현되기 전에 문제가있었습니다. – Cas

답변

0

, 이것은 당신이하지 않으면 stopCurrentSound 방법이 실행 된 후에 다시 만들어야 문제가 될 수 이 라인을 만들거나 새로운 플레이어 인스턴스를 만듭니다.

+0

VoiceOverSoundManager에서 줄을 제거했지만 여전히 오류가 발생합니다. – Cas

+0

또한 내 VoiceOverSoundManager에 다음 줄이 있습니다. self.voiceOverPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL : self.voiceOverURL error : & error]; 중단 점을 설정하면 중단 점을 직접 설정하지 않은 경우에도 중단 점을 항상 중지합니다. – Cas