2010-04-06 21 views
7

Sto pianificando di rilasciare 10 delle mie registrazioni di canzoni gratuitamente, ma in bundle in un'app per iPhone. Non sono disponibili su web o itunes o ovunque al momento.Riproduzione di più file audio utilizzando AVAudioPlayer

Sono nuovo per iphone sdk (l'ultimo) come potete immaginare, quindi ho letto la documentazione per sviluppatori, vari forum e stackoverflow per imparare.

L'applicazione di esempio avTouch di Apple è stata un ottimo inizio. Ma voglio che la mia app suoni tutte e 10 le tracce una per una. Tutti i brani vengono aggiunti alla cartella delle risorse e sono denominati come track1, track2 ... track10.

Nel codice dell'app avTouch posso vedere le seguenti 2 parti, che è dove penso che ho bisogno di apportare modifiche per ottenere quello che sto cercando. Ma io sono perso.

// Load the array with the sample file 
NSURL *fileURL = [[NSURL alloc] 
       initFileURLWithPath: 
       [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"m4a"]]; 


- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag 
{ 
if (flag == NO) 
    NSLog(@"Playback finished unsuccessfully"); 

[player setCurrentTime:0.]; 
[self updateViewForPlayerState]; 
} 

qualcuno può please help me su
1. come caricare la matrice con tutte le 10 tracce che vengono aggiunti alla cartella delle risorse
2. e quando ho colpito il gioco, il giocatore dovrebbe iniziare la prima traccia. quando la prima traccia termina, la seconda traccia dovrebbe iniziare e così via per le tracce rimanenti.

Thank You

risposta

8

Inscript, hai trovato una soluzione a questo ancora? potresti voler attaccare qualcosa di semplice come un'istruzione if { // do something } else { // do something else } per riprodurli in sequenza.

Per il caricamento in un array, creare un nuovo file Plist (fare clic con il tasto destro del mouse sull'albero delle directory -> Aggiungi -> Nuovo file "e trovare un elenco di proprietà in esso, assegnare un nome all'elenco di suoni del file. su di esso dove dice "Dizionario" di default, vai su "Tipo di valore" e seleziona "Array" ... Se guardi all'estrema destra di quella linea, vedrai un piccolo pulsante a 3 barre, clicca che per aggiungere il vostro primo oggetto Ora si aggiunge un elemento alla volta, "Track01", "track02", ecc ... uno per riga

Questo codice va nel file .h:..

NSArray* soundsList; 

Questo codice va in te r di file .m:

NSString *soundsPath = [[NSBundle mainBundle] pathForResource:@"soundslist" ofType:@"plist"]; 
soundsList = [[NSArray alloc] initWithContentsOfFile:soundsPath]; 

array iniziano sempre al N ° 0 ... quindi se avete 5 tracce, track01 sarebbe indice 0, track02 sarebbe indice 1, e così via. Se si vuole interrogare rapidamente l'array per vedere che cosa è in esso, è possibile aggiungere questo pezzo di codice:

int i = 0; 

for (i; i <= ([soundsList count] - 1); i++) { 

    NSLog(@"soundsList contains %@", [soundsList objectAtIndex:i]); 

} 

Tutto ciò che fa è contare quanti elementi sono nella propria matrice (ad esempio 5 o 10 o comunque molti brani) e objectAtIndex: restituirà l'oggetto a qualunque numero di indice inviato.

Per la riproduzione back-to-back si era appena messo l'istruzione if-then nel metodo audioPlayerDidFinishPlaying

Se si desidera riprodurre il file, si può fare:

NSString* filename = [soundsList objectAtIndex:YOURINDEXNUMBER]; 
NSString *path = [[NSBundle mainBundle] pathForResource:filename ofType:@"mp3"]; 

AVAudioPlayer * newAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
self.theAudio = newAudio; // automatically retain audio and dealloc old file if new file is loaded 

[newAudio release]; // release the audio safely 

theAudio.delegate = self; 
[theAudio prepareToPlay]; 
[theAudio setNumberOfLoops:0]; 
[theAudio play]; 

dove YOURINDEXNUMBER è la traccia # che vuoi riprodurre (ricorda, 0 = track01, 1 = track02, ecc.)

Se hai bisogno di aiuto per impostare le variabili nel tuo file .h, fammelo sapere e ti posso guidare attraverso di esso.Inoltre, ricorda di rilasciare theAudio nel tuo metodo dealloc in modo che lo rilascerà quando il programma termina.

0

Nel codice U può richiamare il lettore e riprodurre nuovamente il suono in audioPlayerDidFinishPlaying e tracciare la riproduzione di quanto traccia (utilizzando il contatore).

Fare codice condizionata u gestire ur giocatore di giocare ancora e ancora più volte 10 pista .....

Per ulteriori funzionalità u get di riferimento da AVAudio classe player di riferimento ...

per una migliore sembra u metti pulsanti diversi e volume personalizzato ruoti noob .... usando CoreAnimation Class ....

Best Of Luck

Problemi correlati