Utilizzando MPMusicPlayerController, impostando musicPlayer.currentPlaybackTime a cercare, ma passa in secondo per entrare in vigore

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

Domanda

Ho un UISlider in qualità di scrubber. Come il pollice è trascinato eseguo il seguente:

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

Che funziona bene, la musica cerca in avanti. Rilasciando il pollice, ho riavviato il NSTimer per inviare aggiornamenti in tempo per mantenere l'UISlider in sincronia. Problema è, rilasciando il pollice, le prime richiamate contengono il valore temporale precedente. Questo fa sì che il pollice per tornare indietro alla sua posizione originale prima di tornare al nuovo valore. Molto sgradevole.

Qualcuno ha alcuna esperienza con questo comportamento e un modo per rimediare? Posso fornire un progetto di esempio se si desidera che dimostra questa anomalia.

È stato utile?

Soluzione

Forse è perché ci sono già decodificati i dati nel buffer quando si avvia alla ricerca. Tu cerchi un minuto in avanti, ma c'è qualche millisecondo di audio nel buffer, e quando queste secchi giocare, il giocatore rapporti del loro posizione nel file come corrente. Solo allora arrivano le nuove secchi dalla posizione aggiornata e il marcatore inizia a comportarsi. (Solo una teoria.)

Non potreste semplicemente filtrare i dati intermedi a mano? Sai quanto hai saltato utilizzando il cursore, quindi forse è possibile memorizzare la nuova posizione in una variabile e ignorare gli aggiornamenti dal giocatore fino a quando ottengono comodamente vicino alla nuova posizione del cursore. (Speranza che abbia un senso.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top