필자는 빠른 연속으로 재생할 수 있도록 필요한 16 개의 짧은 사운드 클립 라이브러리를 보유하고 있습니다. 실시간으로 AVAudioPlayer
개체를 만들고 준비하는 것이 iPhone에 대해 너무 많이 묻는 것을 깨달았습니다.NSMutableArray에 AVAudioPlayer 참조를 저장하고 마음대로 재생할 수 있습니까?
그래서 내 앱을 초기화하는 동안 AVAudioPlayers
시리즈를 미리 만들어서 기본적으로 각 16 개의 사운드 중 하나가 사전로드되어 언제든지 재생할 수 있습니다.
이 문제를 깨끗하게 유지하려면 NSMutableArray
에에 대한 참조를 저장하고 싶습니다. 따라서 배열 위치를 아는 것만으로 쉽게 얻을 수 있습니다. 나중에 그런
// (soundPlayers is an NSMutableArray instance var)
soundPlayers = [NSMutableArray arrayWithCapacity:(NSUInteger)16];
for (int i = 0; i < 16; i++) {
NSString *soundName = [NSString stringWithFormat:@"sound-%d", i];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:soundName ofType:@"mp3"];
NSURL *soundFile = [[NSURL alloc] initFileURLWithPath:soundPath];
AVAudioPlayer *p = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFile error:nil];
[soundFile release];
[p prepareToPlay];
[soundPlayers addObject:(id)p];
[p release];
}
: 나는 현재 AVAudioPlayer
참조의 배열을 설정하고있어 어떻게
은 다음과 같습니다 로그에 오류 메시지 승/그러나, 나는 그것을하고있어 방법은 시뮬레이터를 충돌한다 소리 # 8을로드하고 다시 재생하려고 시도합니다.
// (soundPlayer is an AVAudioPlayer instance var)
self.soundPlayer = [soundPlayers objectAtIndex:(NSUInteger)8];
[soundPlayer play];
아이디어가 있으십니까? 또한 누구도 XCode와 함께 제공되는 매끄러운 디버깅 도구가 이러한 유형의 문제에 유용 할 수 있는지 알고 있습니까?
그것은 주제와, 그러나 당신이 '에 캐스팅이 필요하지 않습니다 (ID) 페이지를 : 배열을 유지하고 Macatomy 이전에 언급 한 일을하도록 설정되어 내가 당신의 재산을 보장 할 '및'(NSUInteger) 16 '. 그리고 충돌 로그를 찾아 보시기 바랍니다.디버거 콘솔에 아무 것도 표시되지 않습니까? 그건 내게 일어난 일이 아니야. – Yuji
감사! 매우 도움이됩니다. – todd412