Question

Bon j'ai deux problèmes. J'utilise AVAudioPlayer pour lire un fichier audio au format simple, .caf. Ce que je suis en train de faire est d'avoir un jeu et le bouton pause. Voici un échantillon de simple IBAction pour jouer l'audio à partir d'un bouton.

- (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 compilons et Xcode me dit que myAudio dans le stopaudio IBAction n'est pas défini. Comment puis-je résoudre ce problème, donc je suis en mesure d'accéder myAudio dans un autre IBAction?

Ma deuxième question est que j'utilise NavigationController pour configurer un TableView, quand je fais une sélection, il me faut un UIView avec un bouton retour pour revenir à la TableView. Ce que je suis en train de faire est de tuer toutes les données audio que je joue dans le UIView quand je reviens à la TableView. Le code ci-dessus fait partie du code que je vais avoir dans le UIView.

Aussi une petite question. Disons que j'ai un fichier audio qui est de 1 minute. En cliquant à nouveau jouer chevauchera une nouvelle instance de cette audio avant l'ancienne instance est fini de jouer. Comment puis-je vérifier si myAudio joue et non lui permettre d'être joué à nouveau jusqu'à ce que myAudio est fini de jouer?

Merci!

Était-ce utile?

La solution

Tout d'abord, vous devriez lire la documentation. Il va supprimer presque toutes vos questions. Néanmoins, d'avoir accès à votre instance de AVAudioPlayer de toutes les méthodes de votre classe, vous devez définir dans votre fichier .h. Pour arrêter votre lecteur sur le retour à l'écran précédent, appelez [myAudio stop] dans votre méthode de viewWillDisappear:(BOOL)animated. A propos de votre dernière question. Si vous définissez myAudio dans votre fichier .h, vous serez en mesure de vérifier si elle joue maintenant. smth comme

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

}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top