2009-12-14 2 views
0

D'accord, j'ai deux problèmes. J'utilise AVAudioPlayer pour lire un simple fichier audio au format .caf. Ce que j'essaye de faire est d'avoir un bouton de lecture et de pause. Voici un exemple d'une simple IBAction pour lire l'audio à partir d'un bouton.Aide pour arrêter l'audio à l'aide de AVAudioPlayer

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

Alors, quand j'aller de l'avant et créer un autre IBAction la méthode ...

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

Je compilez et Xcode me dit que myAudio dans le stopaudio IBAction n'est pas défini. Comment puis-je résoudre le problème pour accéder à myAudio dans un autre IBAction? Ma deuxième question est que j'utilise NavigationController pour installer un TableView, quand je fais une sélection, il me prend à un UIView avec un bouton de retour pour revenir à la TableView. Ce que j'essaye de faire est de tuer n'importe quel audio que j'ai joué dans le UIView quand je retourne à la TableView. Le code ci-dessus fait partie du code que je vais avoir dans l'UIView.

Aussi une question rapide. Disons que j'ai un fichier audio d'une minute. Cliquer à nouveau sur la lecture chevauchera une nouvelle instance de cet audio avant que l'ancienne instance ne soit jouée. Comment puis-je vérifier si myAudio est en cours de lecture et ne pas autoriser sa lecture jusqu'à la fin de la lecture de myAudio?

Merci!

+0

vous devez suivre la convention de nommage qu'ils utilisent, de sorte que stopaudio serait stopAudio. – Sneakyness

Répondre

3

Tout d'abord, vous devriez lire la documentation. Cela supprimera presque toutes vos questions. Néanmoins, pour avoir accès à votre instance de AVAudioPlayer à partir de toutes les méthodes de votre classe, vous devez le définir dans votre fichier .h. Pour arrêter le lecteur en revenant à l'écran précédent, appelez le [myAudio stop] dans votre méthode viewWillDisappear:(BOOL)animated. A propos de votre dernière question Si vous définissez myAudio dans votre fichier .h, vous pourrez vérifier s'il est en cours de lecture. smth comme

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

}

Questions connexes