0

了解しました。2つの問題があります。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はstopaudioIBActionのmyAudioが定義されていないことを通知します。別のIBActionでmyAudioにアクセスできるように修正するにはどうすればよいですか?

2番目の質問は、NavigationControllerを使用してTableViewをセットアップしていることです。選択すると、戻るボタンのあるUIViewに移動してTableViewに戻ります。私がやろうとしているのは、TableViewに戻ったときにUIViewで再生しているオーディオをすべて強制終了することです。上記のコードは、UIViewに含めるコードの一部です。

また、1つの簡単な質問。1分の長さのオーディオファイルがあるとしましょう。もう一度[再生]をクリックすると、古いインスタンスの再生が完了する前に、そのオーディオの新しいインスタンスがオーバーラップします。myAudioが再生されているかどうかを確認し、myAudioの再生が終了するまで再生を許可しないようにするにはどうすればよいですか?

ありがとう!

4

1 に答える 1

3

まず、ドキュメントを読む必要があります。それはあなたの質問のほとんどすべてを削除します。それでも、クラスのすべてのメソッドからAVAudioPlayerのインスタンスにアクセスするには、.hファイルで定義する必要があります。前の画面に戻ったときにプレーヤーを停止するには、メソッドを呼び出し[myAudio stop]ますviewWillDisappear:(BOOL)animated。あなたの最後の質問について。.hファイルで定義するmyAudioと、現在再生されているかどうかを確認できます。のようなsmth

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

}

于 2009-12-14T07:22:49.557 に答える