首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为iPhone应用程序制作一个计时器来稍微延迟几个音频通道?

为iPhone应用程序制作一个计时器来稍微延迟几个音频通道?
EN

Stack Overflow用户
提问于 2013-05-24 04:43:18
回答 1查看 134关注 0票数 0

我有5个音频通道由5个AVAudioPlayer对象操作,我想给每个频道添加一个很小的延迟,所以当我按下一个按钮时,我得到了以下内容:

  • 启动声音1(持续10秒)
  • 在1声响后2 0.25秒启动声音
  • 在2声响后3 0.25秒启动声音
  • 在3声响后4 0.25秒启动声音
  • 在3声响后5 0.25秒启动声音

我厌倦了这样做,只需要在每次调用AVAudioPlayerObeject之间使用睡眠(0.25),如下所示:

代码语言:javascript
复制
[audioPlayer1 play];
sleep(delay);
[audioPlayer2 play];
sleep(delay);
[audioPlayer3 play];
sleep(delay);
[audioPlayer4 play];
sleep(delay);
[audioPlayer5 play];

...where延迟是一个设置为0.25的浮动变量。然而,这是行不通的,我同时听到了所有5种声音。我尝试过使用NSTimer进行实验,但我并不真正理解如何为延迟创建一个单独的方法,然后用我的代码调用该方法。

有人能帮我修改一下代码以达到预期的效果吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-24 05:47:34

用一个整数保持状态,该整数标识要启动的声音.

代码语言:javascript
复制
@property(assign, nonatomic) NSInteger startSound;

安排一个计时器..。

代码语言:javascript
复制
self.startSound = 0;
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];

当计时器启动时,启动一个新的声音。在你开始5岁后就辞职..。

代码语言:javascript
复制
- (void)timerFired:(NSTimer *)timer {

    if (self.startSound < 5) {
        // assume you know how to play sound N, numbered 0..4
        [self playSound:self.startSound++];
    } else {
        [timer invalidate];
    }
}

您可以在这个类中使声音变量的计时器间隔和最大计数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16727783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档