Frage

ich habe ein Problem mit AVAudioPlayer wo ich einen Spieler zurücksetzen will, wenn es gerade gespielt wird und habe es wieder spielen.

Ich versuche, die folgend ohne Glück:

Der Ton spielt einmal, aber dann das zweite Mal, dass ich die Taste wählen sie den Ton aufhört, fängt das dritte Mal den Ton wieder.

//Stop the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    [player stop];
    [player play];
} else {
    NSLog(@"playSound: %@", selectedSound);
    [player play];      
}

Ich habe auch versucht, mit player.currentTime = 0, die, dass der Spieler würde zurückgesetzt zeigt an, dass nicht funktioniert, habe ich auch versucht, das Zurücksetzen current = 0 und dann spielen aufrufen, die nicht funktioniert hat.

//Stop the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    player.currentTime = 0;
    [player play];
} else {
    NSLog(@"playSound: %@", selectedSound);
    [player play];      
}
War es hilfreich?

Lösung

Für Ihre Situation würde ich versuchen, die folgende

//Pause the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    [player pause];
}

player.currentTime = 0;
[player play];

Wenn Sie gehen, um sofort wieder den Ton zu spielen, würde ich Pause statt Stopp vor. Der Aufruf Stopp „Stoppt die Wiedergabe und rückgängig macht das Setup für die Wiedergabe benötigt wird.“

Andere Tipps

Swift Beispiel:

player.currentTime = 0.0;

Wie bereits erwähnt, wenn Sie der Sound wollen, wieder zu spielen, sollten Sie die AVAudioPlayer Instanz mit einem Anschlag vermeiden deaktivieren, sondern nur ein Reset der Position ausgeben, wo es spielt. So verwenden Sie nicht stop () oder Pause (), aber als Plumenator erwähnt, gibt nur .currentTime = 0. Also in Ihrem Fall würden Sie einfach tun:

if (player.isPlaying) { 
   player.currentTime = 0
} else {
   player.play()
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top