【问题标题】:How to play sounds in iPhone app如何在 iPhone 应用程序中播放声音
【发布时间】:2010-02-22 07:04:46
【问题描述】:

我是这个非常令人困惑的 Objective-C 游戏的初学者。

我想在每次按下某个按钮时播放一个很短的音效。

我该怎么做?

我可以使用 mp3 文件吗?还是我必须转换成 wav?

【问题讨论】:

    标签: iphone objective-c audio


    【解决方案1】:

    您可以使用System Sound Services 播放短音:

    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef = CFBundleCopyResourceURL(mainBundle, CFSTR("filename"), CFSTR("aiff"), NULL);
    SystemSoundID soundId;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundId);
    AudioServicesPlaySystemSound(soundId);
    CFRelease(soundFileURLRef)
    

    支持.caf、.aiff 和.wav 格式。

    【讨论】:

    • 谢谢,它编译得很好。我想我读到声音在模拟器上不起作用……这是真的吗?
    • 别这么认为——模拟器应该没问题。
    • 好的,我已将它加载到我的 iPhone 上,但声音仍然无法正常工作。我使用过 .wav 和 .aif 文件格式。我已经包含了“AudioToolbox/AudioToolbox.h”。有什么想法可以完成这项工作吗?
    • 为了让它在模拟器中工作,请转到 Mac 的系统偏好设置并在“声音”首选项的“声音效果”部分中启用“播放用户界面声音效果”跨度>
    【解决方案2】:

    没有足够的声誉来评论 @dstnbrkr 的解决方案,所以我会将其作为答案发布。

    在上面的例子中,CFURLRef soundFileURLRef 没有被释放。

    在最后一行 (AudioServicesPlaySystemSound(soundId);) 之后调用 CFRelease(soundFileURLRef) 以释放 Core Foundation 对象。

    【讨论】:

      猜你喜欢
      • 2011-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多