Frage

Ich habe eine einfache iPhone -App mit mehreren Sounds, die bereits abgespielt werden. Eins wird es jedoch insbesondere nicht tun. Der Codeblock, den ich gehackt habe, ist:

NSString *soundPath2 = [[NSBundle mainBundle] pathForResource:@"gameover" ofType:@"wav"];
NSURL *soundFileURL2 = [NSURL fileURLWithPath:soundPath2];
NSError *err;
AVAudioPlayer *sound2 = [[[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL2 error:&err] autorelease];
NSLog(@"Error: %@", [err description]);
NSLog(@"Duration: %f ", [sound2 duration]);
BOOL b = [sound2 play];
NSLog(@"Play Bool: %d", b);

Die Konsole zeigt, dass der Fehler null ist, der Boolesche kehrt wahr und selbst die Dauer ist korrekt! Dennoch macht das Spiel nichts. Wenn ich "Gameover" in einen anderen Sound (ein einfaches Piepton) ändere, ist alles in Ordnung.

Obwohl es großartig wäre, es ins Spiel zu bringen, habe ich auch Schwierigkeiten zu verstehen, welche Fehlerbedingungen usw. Ich kann nach 1) wissen, dass es fehlgeschlagen ist und 2) warum.

Der Sound ist die Frage zur Verfügung unter http://wdr1.com/gameover.wav.

War es hilfreich?

Lösung

Das Problem ist, dass Sie die Avaudioplayer nicht autorelease. Die Spielmethode erfolgt asynchron und wenn der Spieler autorelea wird, hält nichts daran und er stirbt einfach.

Sie sollten Ihren Audio -Player veröffentlichen, sobald der Spieler im Delegierten gespielt hat:

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)audioPlayer successfully:(BOOL)flag
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top