gpt4 book ai didi

ios - 当使用序列数组每秒发回一个数字时,如何使多个声音一个接一个地播放

转载 作者:行者123 更新时间:2023-12-02 23:42:44 25 4
gpt4 key购买 nike

基本上,我设置了一个数组,这样当按下按钮时,它每秒就会返回一次值,这些值先前已在项目中声明。

我的项目中要播放四个声音而不是数字值。

使用的代码是:

- (IBAction)playSeq:(UIButton *)sender
{
AppDelegate* app = [[UIApplication sharedApplication] delegate];
if (sender.tag == 1001)
{
// [app addNote:2];
// [app addNote:3];
// [app addNote:2];
// [app addNote:0];
// [app addNote:1];

[app playSeq:@[@2, @3, @3, @0, @1]];
}
}

在使用功能 playSeq的情况下,我希望能够用等同于这些数字的声音替换 [@2, @3, @3, @0, @1]

有人对我该如何做有任何建议吗?不像仅用音频文件的名称替换数字那样简单!谢谢!!

最佳答案

playSeq方法的简单实现如下所示:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
NSTimeInterval timeDelay = 0.0;
for (id sound in sounds) {
dispatch_time_t dispatchDelay = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(timeDelay * NSEC_PER_SEC));
dispatch_after(dispatchDelay, queue, ^{
// Play the sound in whatever fashion you want
[self play:sound];
});
}

这并没有给您太多控制权(例如取消等),但它可能已经足够满足您的需求。

如果不是,请考虑将自定义 NSOperation子类用于声音播放任务。为该类提供 delay属性以延迟声音播放,或者创建另一个 NSOperation子类,该子类的唯一任务是等待指定的延迟。然后,您可以将所有这些操作添加到 NSOperationQueue中,并在这些操作之间创建依赖关系以按顺序执行它们。

关于ios - 当使用序列数组每秒发回一个数字时,如何使多个声音一个接一个地播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36186457/

25 4 0