【问题标题】:iOS AVAudioPlayer multiple instances, multiple sounds at onceiOS AVAudioPlayer 多个实例,一次多个声音
【发布时间】:2010-09-28 22:46:10
【问题描述】:

我正在为 iPad 制作一本交互式儿童读物,其中包含“朗读”选项。

对于每个页面(具有索引),都有一个音频剪辑可以产生“读给我听”功能。该功能运行良好,除了当我翻页时,即使在新音频开始时,前一页的音频仍然播放,这是我的示例:

- (void) didTurnToPageAtIndex:(NSUInteger)index 
{
    if ([delegate respondsToSelector:@selector(leavesView:didTurnToPageAtIndex:)])
        [delegate leavesView:self didTurnToPageAtIndex:index];

    if([[NSUserDefaults standardUserDefaults] boolForKey:@"kReadToMe"] == YES)
    {
        NSString* filename = [voices objectAtIndex:index];
        NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"m4v"];  
        NSLog(@"File: %@, Index: %i",path,index);

        //Create new audio for next page
        AVAudioPlayer * newAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil]; 
        rtmAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded
        //[newAudio release];
        [rtmAudio play];
    }
}

例如,我在第 2 页的音频停止播放之前转到第 3 页,两个剪辑相互播放,这会惹恼孩子们,我知道这对我有用。

我尝试在分配新文件之前放置 [rtmAudio stop],但这似乎不起作用。在开始新剪辑之前,我需要一种方法来终止之前的音频剪辑。

【问题讨论】:

  • btw: "rtmAudio = newAudio; // 如果加载了新文件,则自动保留音频并释放旧文件" 如果是这种情况,则不会释放。
  • 不是真的,我的问题与创建单个 AVAudioPlayer 的多个实例有关。
  • 正如我提到的,[rtmAudio stop];不适用于前一个实例。

标签: ipad instance avaudioplayer dealloc


【解决方案1】:

我建议您在整个应用程序中使用一个音频播放器实例。然后你可以检查它是否正在播放,如果是,请停止它然后继续。

在停止旧播放器之前,您正在用这种方法创建一个新播放器......我相信

【讨论】:

  • 但即使我放置了 [rtmAudio stop];在我创建新实例之前,它不起作用。
  • 这就是它的全部内容。我在标题中声明它并使用 .
  • 出于某种原因,现在它可以工作了。我有一个“- (void) didTurnToPageAtIndex:(NSUInteger)index”所以我放置了一个 [self.rtmAudio stop];在那里,设置委托后:自我。
  • 您可以拥有多个 AVAudioPlayer 实例。事实上,Apple docs 推荐它:“同时播放多个声音,每个音频播放器一个声音,精确同步”。如果在您拨打 [player stop] 时它没有停止,那么您可能做错了什么。
【解决方案2】:

正如 AlexChaffee 提到的 Apple docs,“同时播放多个声音,每个音频播放器一个声音,精确同步”。使用 NSNotificationCenter 的通知在应用程序中使用多个实例似乎更可取。

【讨论】:

    猜你喜欢
    • 2016-08-20
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多