Usando MPMusicPlayerController, el establecimiento de musicPlayer.currentPlaybackTime a buscar, pero ocupa el segundo para tener efecto

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

Pregunta

Tengo un UISlider actúa como depurador. A medida que el oro es arrastrado ejecuto el siguiente:

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

Esto funciona bien, la música busca hacia adelante. Al soltar el dedo pulgar, reinicio el NSTimer para enviar actualizaciones en tiempo para mantener el UISlider en sincronía. El problema es que, al soltar el pulgar, las primeras devoluciones de llamadas contienen el valor de tiempo anterior. Esto hace que el pulgar para saltar de nuevo a su posición original antes de volver al nuevo valor. Muy desagradable.

Alguien tiene alguna experiencia con este comportamiento y una manera de rectificar? Puedo suministrar un proyecto de ejemplo si le gustaría que demuestra esta anomalía.

¿Fue útil?

Solución

Tal vez sea porque ya se decodifican los datos en el búfer cuando se inicia la búsqueda. Usted busca un minuto hacia adelante, pero hay unos pocos milisegundos de audio en la memoria intermedia, y cuando estos cubos juego, el jugador informes de su posición en el archivo actual. Sólo entonces vienen los nuevos cubos de la posición actualizada y el marcador comienza a comportarse. (Sólo una teoría.)

No se pudo simplemente filtrar los datos intermedios de la mano? Ya sabes lo mucho que han saltado con el control deslizante, así que tal vez se podría almacenar la nueva posición en una variable e ignorar las actualizaciones de jugador hasta que consiguen cómodamente cerca de la nueva posición de la corredera. (La esperanza que tiene sentido.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top