如何让 avaudioplayer 在点击新闻歌曲时停止播放上一首歌曲?

Posted

技术标签:

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

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

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

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

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

请解决这个问题。

【问题讨论】:

【参考方案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]或任何其他它是用于新实例变量,它没有覆盖旧实例变量,这就是我认为你所说的问题 当你选择一首歌曲时,你会创建一个音频播放器实例,对吗?然后显示另一个视图。当我们回来时,音频仍在运行,所以当您选择另一首歌曲时,您应该停止实例变量正在播放的音频。然后用新歌创建一个新的

以上是关于如何让 avaudioplayer 在点击新闻歌曲时停止播放上一首歌曲?的主要内容,如果未能解决你的问题,请参考以下文章

使用 AVAudioPlayer 快进歌曲

如何将歌曲从 iPod 库复制到应用程序并使用 AVAudioPlayer 播放?

使用 AVAudioPlayer 当前播放歌曲的艺术作品

无法使用 AVAudioPlayer 播放专辑

如何使用 AVAudioPlayer 执行 .m4a 歌曲文件的流式传输?

如何在 AVAudioplayer 中播放多个文件