Pregunta

Bien Tengo dos problemas. Estoy usando AVAudioPlayer para reproducir un archivo de audio en formato sencillo .caf. Lo que estoy tratando de hacer es tener una obra de teatro y el botón de pausa. Este es un ejemplo de un simple IBAction para reproducir el audio de un botón.

- (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]; 
}

Así que cuando seguir adelante y crear otra IBAction con el método ...

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

compilo y Xcode me dice que MyAudio en el stopaudio IBAction no está definido. ¿Cómo lo arreglo, así que estoy acceder a la MyAudio en otro IBAction?

La segunda pregunta es que estoy usando NavigationController de configurar un TableView, cuando hago una selección que me lleva a un UIView con un botón de retroceso para volver a la TableView. Lo que estoy tratando de hacer es matar a cualquier archivo de audio que he jugando en el UIView cuando vaya de nuevo a la TableView. El código anterior es parte del código que voy a tener en el UIView.

También una pregunta rápida. Digamos que tengo un archivo de audio que es de 1 minuto de duración. Al hacer clic en el juego de nuevo, se superponen una nueva instancia de que el audio antes de la instancia antigua se hace jugando. ¿Cómo puedo comprobar para ver si MyAudio está jugando y no permitir que sea jugado de nuevo hasta que se MyAudio terminado de jugar?

Gracias!

¿Fue útil?

Solución

En primer lugar, usted debe leer la documentación. Se eliminará casi todas sus preguntas. Sin embargo, a tener acceso a la instancia de AVAudioPlayer de todos los métodos de la clase, se deben definir en el archivo .h. Para detener el reproductor al volver a la pantalla anterior, llame [myAudio stop] en su método viewWillDisappear:(BOOL)animated. Sobre su última pregunta. Si define myAudio en su archivo .h, usted será capaz de comprobar si se está jugando ahora. smth como

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

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top