好吧我有两个问题。我正在使用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完成播放之前不允许再次播放?
谢谢!
答案 0 :(得分:3)
首先,您应该阅读文档。它将删除几乎所有的问题。不过,要从类的所有方法访问您的AVAudioPlayer实例,您应该在.h文件中定义它。要停止播放器返回上一个屏幕,请使用[myAudio stop]
方法拨打viewWillDisappear:(BOOL)animated
。关于你的上一个问题。如果您在.h文件中定义myAudio
,则可以检查它是否正在播放。喜欢
- (IBAction) clear { if(![myAudio isPlaying]){ [myAudio play]; }
}