2009-12-14 4 views
0

좋아요. 두 가지 문제가 있습니다. AVAudioPlayer를 사용하여 .caf 형식의 간단한 오디오 파일을 재생하고 있습니다. 내가하려는 일은 재생 및 일시 중지 버튼이있는 것입니다. 다음은 버튼에서 오디오를 재생하는 간단한 IBAction 샘플입니다. 내가 가서 ... 방법으로AVAudioPlayer를 사용하여 오디오를 중지하는 데 도움이됩니다.

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

을 다른 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]; 
} 

그래서 나는 컴파일하고 엑스 코드는 myAudio stopaudio에 IBAction를 정의되지 않는다는 것을 알려줍니다. 다른 IBAction에서 myAudio에 액세스 할 수 있도록 어떻게 수정합니까?

내 두 번째 질문은 NavViewController를 사용하여 TableView를 설정하는 것입니다. 선택하면 TableView로 돌아가려면 뒤로 버튼이있는 UIView로 이동합니다. 내가 뭘 하려는지 내가 TableView로 돌아갈 때 UIView에서 재생할 오디오를 죽이는 것입니다. 위의 코드는 UIView에있는 코드의 일부입니다.

또한 빠른 질문입니다. 1 분 길이의 오디오 파일이 있다고 가정 해 보겠습니다. 재생을 다시 클릭하면 이전 인스턴스 재생이 완료되기 전에 해당 오디오의 새 인스턴스가 겹칩니다. myAudio가 재생 중인지 확인하고 myAudio가 끝날 때까지 다시 재생할 수 없도록하려면 어떻게해야합니까?

감사합니다!

+0

처럼 당신은 그들이 사용하는 이름 지정 규칙을 따라야합니다. – Sneakyness

답변

3

먼저 설명서를 읽어야합니다. 거의 모든 질문을 삭제할 것입니다. 그럼에도 불구하고 클래스의 모든 메서드에서 AVAudioPlayer의 인스턴스에 액세스하려면 .h 파일에 정의해야합니다. 이전 화면으로 돌아갈 때 플레이어를 중지하려면 viewWillDisappear:(BOOL)animated 방법으로 [myAudio stop]으로 전화하십시오. 마지막 질문에 대해. .h 파일에 myAudio을 정의하면 현재 재생 중인지 확인할 수 있습니다. 그 stopaudio이 stopAudio 될 수 있도록 떨어지게은

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

}

관련 문제