使用AVAudioPlayer帮助停止音频

时间:2009-12-14 06:11:47

标签: iphone xcode avaudioplayer iphone-sdk-3.1

好吧我有两个问题。我正在使用AVAudioPlayer播放.caf格式的简单音频文件。我要做的是有一个播放和暂停按钮。以下是从按钮播放音频的简单IBAction示例。

- (IBAction) clear {
NSString *path = [[NSBundle mainBundle] pathForResource:@"clear" ofType:@"caf"];
AVAudioPlayer* myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
myAudio.delegate = self;
myAudio.volume = 1.0;
myAudio.numberOfLoops = 0;
[myAudio play]; 
}

所以当我继续用方法创建另一个IBAction时......

- (IBAction) stopaudio {
[myAudio stop];
audioPlayer.currentTime = 0;
}

我编译并且xcode告诉我,stopaudio IBAction中的myAudio没有定义。我该如何修复它以便能够在另一个IBAction中访问myAudio?

我的第二个问题是我正在使用NavigationController来设置TableView,当我做出选择时,它会带我到带有后退按钮的UIView返回到TableView。我要做的是当我回到TableView时杀死我在UIView中播放的任何音频。上面的代码是我将在UIView中拥有的代码的一部分。

还有一个简单的问题。假设我有一个1分钟的音频文件。再次单击播放将在旧实例播放完毕之前重叠该音频的新实例。如何检查myAudio是否正在播放,并且在myAudio完成播放之前不允许再次播放?

谢谢!

1 个答案:

答案 0 :(得分:3)

首先,您应该阅读文档。它将删除几乎所有的问题。不过,要从类的所有方法访问您的AVAudioPlayer实例,您应该在.h文件中定义它。要停止播放器返回上一个屏幕,请使用[myAudio stop]方法拨打viewWillDisappear:(BOOL)animated。关于你的上一个问题。如果您在.h文件中定义myAudio,则可以检查它是否正在播放。喜欢

- (IBAction) clear {
    if(![myAudio isPlaying]){
        [myAudio play]; 
    }
     

}