Domanda

Va bene ho due problemi. Sto usando AVAudioPlayer di riprodurre un file audio in formato semplice .caf. Quello che sto cercando di fare è avere un gioco e pulsante di pausa. Ecco un esempio di una semplice IBAction per riprodurre l'audio da un pulsante.

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

Così, quando vado avanti e creare un altro IBAction con il metodo ...

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

compilo e Xcode mi dice che MyAudio nel stopaudio IBAction non è definito. Come faccio a risolvere il problema, quindi sono in grado di accedere in un altro MyAudio IBAction?

La mia seconda domanda è che sto usando navigationController di impostare una TableView, quando faccio una selezione che mi porta ad un UIView con un pulsante Indietro per tornare alla TableView. Quello che sto cercando di fare è uccidere qualsiasi audio che ho giocare nel UIView quando torno al TableView. Il codice di cui sopra è parte del codice che ho intenzione di avere in UIView.

Anche una domanda veloce. Diciamo che ho un file audio che è di 1 minuto. Cliccando nuovamente il gioco si sovrappongono una nuova istanza che l'audio prima che il vecchio istanza è finito di giocare. Come posso controllare per vedere se MyAudio sta giocando e non permettere che sia giocato di nuovo fino MyAudio è finito di giocare?

Grazie!

È stato utile?

Soluzione

Prima di tutto, si dovrebbe leggere la documentazione. Si eliminerà quasi tutte le vostre domande. Tuttavia, per avere accesso a istanza di AVAudioPlayer da tutti i metodi della classe, è necessario definire nel file .h. Per arrestare il lettore di tornare alla schermata precedente, chiamare [myAudio stop] nel metodo viewWillDisappear:(BOOL)animated. A proposito di tua ultima domanda. Se si definisce myAudio nel file .h, si sarà in grado di verificare se si sta giocando ora. smth come

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

}

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top