2010-10-29 129 views
2

我在安装有iPad的页面上安装了一组字符和背景音乐。点击角色将开始动画,角色将随着音乐一起播放。问题是,音乐和动画不同步,可能有更好的方法。如何在iPad上使用声音同步动画

这是我如何做到这一点。
•页面加载
•我加字符的UIImageViews 的仍然版本•我创建的每个人物的仪器AVAudioPlayer对象,开始他们玩,并设置音量为0
•我加的动画版本字符作为具有PNG序列的UIImageViews,位于静止版本之上并隐藏它们。 (有按钮,抛出知名度和音量开关)

当我演示这个,音频开始播放之前页面加载和一些字符真的不同步。我应该做什么不同?我如何同步这些?这是完全错误的方法吗?我对此很感兴趣。

回答

1

我不确定这是否能解决您的具体问题(因为我不完全了解您要做什么),但通常您应该创建一组AVAudioPlayer对象,然后在每个对象上调用[myPlayer prepareToPlay]他们。该调用将数据加载到准备播放的缓冲区中,但实际上并未启动它们。然后,当你准备开始他们的所有比赛(在viewDidLoad或其他地方)时,同时打电话给他们[player play]

请注意,这可能只会比目前的效果更好,但它仍然无法完美工作。保持动画和音乐的完美同步非常困难,而且通常只能通过使用计时器来实现,该计时器偶尔会根据来自音频回放引擎的关于当前音频回放的确切位置的信息来重置其周期性。

+0

这是一个很好的观点。您必须使用计时器,每隔几毫秒查询AVAudioPlayer对象的currentTime属性。然后尝试将您的其他媒体播放与音频播放器对象的播放重新对齐。 – openfrog 2012-12-03 14:25:31

0

我知道这个任务很旧,但是使用CAKeyframeAnimation可能会有帮助。