【问题标题】:How to make an avaudioplayer to stop playing previous song while clicking on newsong?如何让 avaudioplayer 在点击新闻歌曲时停止播放上一首歌曲?
【发布时间】:2011-03-08 09:17:35
【问题描述】:

我用按钮歌曲创建了一个视图。

  • 当我们点击按钮时,它会转到一个包含以下列表的表格 歌曲。
  • 当我们选择一首歌曲时,它会转到另一个视图并播放该歌曲。
  • 无论何时播放歌曲,我们都可以返回主视图或 歌曲表这首歌将在后台播放它的罚款高达 在这里。

但每当我尝试播放歌曲表中的另一首歌曲时,前一首歌曲不会停止,它会继续与所选歌曲一起播放。

我的目标是在切换到不同视图时播放歌曲。我已经完成了这个,但我想要的是每当我从歌曲表中选择另一首歌曲时,它必须停止上一首歌曲并播放所选歌曲。

请解决这个问题。

【问题讨论】:

    标签: iphone objective-c audio avaudioplayer


    【解决方案1】:

    您必须停止avaudioplayer 并在释放现有实例后重新创建实例。

    - (IBAction)buttonClicked 
    {
     if([audioPlayer isPlaying])
     {
      [audioPlayer stop];
      [audioPlayer release];
      audioPlayer = nil;
      audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfUrl:songUrl];
      [audioPlayer play];
    }
    // Do something like change view etc.
    }
    

    如果您从表格视图中选择,请将其放入 UITableView delegate didSelectRowAtIndexPath:

    【讨论】:

    • 在.h中有avaudioplayer *audioplayer
    • 在 .h 中我已经写了 avaudioplayer *audioplayer ... 在 .m 我已经写了上面的代码但是它不起作用我怎样才能得到那个旧实例以便我可以停止 audioplayer 停止
    • 你应该使用你在.h文件中创建的相同的avaudioplayer实例变量
    • 实际上,当它加载该页面时,它正在获取 .h 文件中的实例变量。当它加载页面时实际发生的情况是它正在为 audioplayer 创建新的实例变量,所以如果我们给 [audioplayer stop]或任何其他它是用于新实例变量,它没有覆盖旧实例变量,这就是我认为你所说的问题
    • 当你选择一首歌曲时,你会创建一个音频播放器实例,对吗?然后显示另一个视图。当我们回来时,音频仍在运行,所以当您选择另一首歌曲时,您应该停止实例变量正在播放的音频。然后用新歌创建一个新的
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多