【问题标题】:Playing sound samples on the iPhone在 iPhone 上播放声音样本
【发布时间】:2010-10-17 09:49:20
【问题描述】:

我已经到了想在我的游戏/应用程序中播放一些示例的地步。我的直觉说使用 openAL ... 我会遇到需要一次播放多个样本(但不超过 2 或 3 个)并且样本会很短(2 或 3 秒)的情况。

我的问题是,考虑到该标准,在 iPhone 上播放样本的最佳方式是什么?

【问题讨论】:

    标签: ios audio playback


    【解决方案1】:

    这是我正在使用的一段示例代码:

    第一个选项:

    我在我的 .h 文件中定义了这个

    SystemSoundID topClick;
    

    在我的 .m 文件中,我最先加载声音(aiff 文件):

    NSBundle* bundle = [NSBundle mainBundle];
    NSString *topClickFile = [bundle pathForResource:@"top_click" ofType:@"aiff"];
    

    然后,当我想播放声音时,我使用:

    AudioServicesPlaySystemSound(topClick);
    

    第二个选项:

    您还可以使用 AVAudioPlayer(我认为从固件 2.2 开始可用):

    NSString *graffitiSprayFile = [bundle pathForResource:@"sound_effect" ofType:@"aiff"];
    AVAudioPlayer* sprayAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:graffitiSprayFile] error:NULL];
    sprayAudio.delegate = self;
    [sprayAudio prepareToPlay];
    [sprayAudio setNumberOfLoops:999];
    

    第一个选项对于较短的音效非常有用。

    【讨论】:

    • 只是一点信息 - AVAudioPlayer 可以播放多个 caf、aiff、wav 文件,但一次只能播放一个 mp3(所以不要使用 mp3 来播放游戏效果)。
    • 同样将循环数设置为 -1 将使样本永远重复。
    • 是否需要调用 AudioServicesCreateSystemSoundID?
    • 我可以问一个问题吗?如何通过代码最大化声音的音量?非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多