Mit MPMusicPlayerController, musicPlayer.currentPlaybackTime Einstellung zu suchen, sondern nimmt zweite Kraft treten

StackOverflow https://stackoverflow.com/questions/2379165

Frage

Ich habe einen UISlider als Wäscher handeln. Da der Daumen schleppte ich folgendes ausführen:

- (void) _seekTo:(double)playbackTime {
     mPlayer.currentPlaybackTime = playbackTime;
}

Das funktioniert gut, Musik sucht nach vorn. Nach dem Loslassen der Daumen, starte ich die NSTimer Zeit-Updates zu senden, um die UISlider synchron zu halten. Das Problem ist, auf den Daumen Freigabe, die ersten paar Rückrufe enthalten den vorherigen Zeitwert. Dies bewirkt, dass der Daumen in seine ursprüngliche Position zurück zu springen, bevor auf den neuen Wert zurückkehrt. Sehr unschön.

Wer noch keine Erfahrung mit diesem Verhalten und eine Art und Weise zu korrigieren? Ich kann ein Beispielprojekt liefern, wenn Sie dies, dass demonstriert Anomalie möchten.

War es hilfreich?

Lösung

Vielleicht ist es, weil es bereits Daten im Puffer decodiert, wenn Sie suchen beginnen. Sie suchen eine Minute nach vorne, aber es gibt ein paar Millisekunden von Audiodaten im Puffer, und wenn diese Eimer spielen, muss der Spieler meldet ihre Position in der Datei als Strom. Erst dann kommen die neuen Eimer aus der aktualisierten Position und die Markierung zu verhalten beginnt. (Nur eine Theorie.)

Könnten Sie nicht einfach die Zwischendaten von Hand filtern? Sie wissen, wie viel Sie den Schieberegler gesprungen verwenden, so vielleicht haben Sie die neue Position in einer Variablen speichern können und die Updates von Spieler ignorieren, bis sie bequem nahe dem neuen Schieberegler Position. (Ich hoffe, das macht Sinn.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top