Frage

In Ordnung Ich habe zwei Probleme. Ich verwende AVAudioPlayer eine einfache Audio-Datei in .caf Format zu spielen. Was ich versuche, ein Spiel und Pause-Taste zu tun ist, haben. Hier ist ein Beispiel eines einfachen IBAction den Ton von einer Taste zu spielen.

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

Also, wenn ich vorangehen und ein anderes IBAction mit dem Verfahren ...

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

ich kompilieren und Xcode sagt mir, dass myAudio im stopaudio IBAction ist nicht definiert. Wie kann ich es beheben, damit ich Zugang myAudio in einem anderen IBAction der Lage bin?

Die zweite Frage ist, dass ich Navigation das Einrichten eines Tableview bin mit, wenn ich eine Auswahl treffen sie mich mit einem Back-Taste, um eine UIView nimmt zum Tableview zurückzukehren. Was ich versuche zu tun, alle Audio zu töten, dass ich in der UIView habe zu spielen, wenn ich wieder in die Tableview gehen. Der obige Code Teil des Codes ist, dass ich in der UIView haben werde.

Auch eine kurze Frage. Lets sagen, dass ich eine Audio-Datei, die 1 Minute lang. play klicken, wird überlappt wieder eine neue Instanz dieses Audio, bevor die alten Instanz getan zu spielen. Wie kann ich überprüfen, um zu sehen, ob myAudio spielt und nicht zulassen, dass es wieder gespielt werden, bis myAudio Spiele fertig ist?

Danke!

War es hilfreich?

Lösung

Zunächst einmal sollten Sie die Dokumentation lesen. Es wird fast alle Ihre Fragen entfernen. Dennoch von allen Methoden der Klasse Zugriff auf die Instanz von AVAudioPlayer zu haben, sollten Sie es in Ihrer .h-Datei definiert werden. So stoppen Sie den Player zum vorherigen Bildschirm auf Rückkehr Anruf [myAudio stop] in Ihrer viewWillDisappear:(BOOL)animated Methode. Über Ihre letzte Frage. Wenn Sie myAudio in Ihrer .h-Datei definieren, werden Sie in der Lage sein zu überprüfen, ob es jetzt spielt. smth wie

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

}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top