1
4
使用NSData dataWithContentsOfMappedFile而不是dataWithContentsOfFile。 另外,AVAudioPlayer处理自己的线程,您不需要创建线程[AVAudioPlayer play]在开始播放后返回,而不是在播放结束后返回。
|
2
2
你的声音弹得怎么样?如果我要做一个猜测的话,那就是每次播放声音时,操作系统实际上是从磁盘上加载声音,同时播放声音。 更新:
|
3
2
我也有同样的问题。为了解决这个问题,我首先播放并暂停声音,当它第一次加载到音量0时-这比prepareToPlay效果更好,因为prepareToPlay似乎仍然会导致速度减慢:
当需要播放声音时,我只是[播放];。然后每一个更新周期我都会循环遍历所有活动的声音,捕捉即将结束的声音并回放它们,而不是让它们过期—这样就避免了从头开始播放声音的开销和速度减慢。这里的示例在声音结束后1/15秒停止声音:
现在可以开始下一场戏了。好像很管用! 结果我还是得到一些暂停的第一次播放的声音。我认为在零音量播放它实际上没有什么作用,但我把它改为0.0001音量播放,然后暂停-这是听不见的,但似乎做的工作,准备的声音。 |
4
2
|
5
1
(在长度上使用答案而不是注释,这样我就可以显示代码): 我的声音播放方法如下:
声音加载如下:
我们已经有一些线索,声音正在重新加载从磁盘每次…但不知道为什么这是或如何防止它。 |
6
1
我觉得这条线太复杂了。试试这个:
然后播放声音变成
别忘了正确设置AudioSession类别。 |
7
1
为什么不直接使用AudioServicesPlaySystemSound?这非常适合声音效果。
|
8
0
多亏了我工作中的一个项目,我已经调查了几天了。我在代码中添加了一些自制的评测,发现播放声音的调用在我的OpenGL游戏中导致了帧速率问题。根据我的发现,我给你一些建议:
如果我找到其他有用的东西,我会告诉你的!祝你好运! |
user2606782 · 限制子视图在superview边界内的移动 7 年前 |