我有一个 UISlider 充当洗涤器。当拖动拇指时,我执行以下操作:
- (void) _seekTo:(double)playbackTime {
mPlayer.currentPlaybackTime = playbackTime;
}
效果很好,音乐寻求前进。松开拇指后,我重新启动 NSTimer 以发送时间更新,以保持 UISlider 同步。问题是,释放拇指后,前几次回调包含之前的时间值。这会导致拇指在返回新值之前跳回其原始位置。非常难看。
有人对这种行为有任何经验以及纠正方法吗?如果您愿意,我可以提供一个示例项目来演示这种异常情况。
也许是因为当你开始查找时,缓冲区中已经有解码后的数据。您向前寻找一分钟,但缓冲区中有几毫秒的音频,当这些桶播放时,播放器将其在文件中的位置报告为当前位置。只有这样,新的存储桶才会从更新的位置出现,并且标记才开始起作用。 (只是一个理论。)
难道不能简单地手工过滤中间数据吗?您知道使用滑块跳跃了多少,因此也许您可以将新位置存储到变量中并忽略来自玩家的更新,直到他们舒适地接近新的滑块位置。 (希望这是有道理的。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)