好的,我有两个问题。我使用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的告诉我,myAudio在stopaudio IBAction为没有定义。我该如何解决这个问题,所以我能够在另一个IBAction为访问myAudio?

我的第二个问题是,我使用NavigationController设置一个TableView中,当我做出选择它带我到一个UIView与后退按钮返回到TableView中。我正在试图做的是杀死我的UIView的纷纷打起,当我回去的TableView任何音频。上面的代码就是我将不得不在UIView的代码的一部分。

另外一个快速的问题。比方说,我有一个音频文件是1分钟长。再次点击播放旧实例之前将重叠音频的新实例完成播放。我如何检查,看看是否myAudio正在播放不允许其再次播放,直到myAudio完成打?

感谢您!

有帮助吗?

解决方案

首先,你应该阅读文档。它会删除几乎所有的疑问。不过,有从你的类的所有方法访问您的AVAudioPlayer的情况下,你应该在你的.h文件中定义它。要停止在返回到先前的屏幕播放机,调用[myAudio stop]viewWillDisappear:(BOOL)animated方法。关于你的最后一个问题。如果你在.h文件中定义myAudio,你将能够检查它是否现在玩。不便等

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

}

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top