2010-04-06 23 views
7

Estoy planeando liberar 10 de mis canciones de forma gratuita, pero incluidas en una aplicación para el iPhone. No están disponibles en la web o iTunes o en cualquier lugar a partir de ahora.Reproduzca múltiples archivos de audio usando AVAudioPlayer

Soy nuevo en iphone sdk (último) como te puedes imaginar, así que he estado revisando la documentación del desarrollador, varios foros y stackoverflow para aprender.

La aplicación de muestra de Apple avTouch fue un gran comienzo. Pero quiero que mi aplicación reproduzca las 10 pistas una por una. Todas las canciones se agregan a la carpeta de recursos y se nombran como track1, track2 ... track10.

En el código de la aplicación avTouch puedo ver las 2 partes siguientes, que es donde creo que necesito hacer cambios para lograr lo que estoy buscando. Pero estoy perdido.

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

Puede alguien por favor me ayude en
1. cómo cargar la matriz con todas las 10 pistas que se añaden a la carpeta de recursos
2. y cuando golpeo juego, el jugador debe comenzar la primera pista. cuando la primera pista finaliza, la segunda pista debe comenzar y así sucesivamente para las pistas restantes.

Usted

Respuesta

8

Gracias Inscript, has encontrado una solución a este todavía? Es posible que desee seguir con algo simple como una declaración if { // do something } else { // do something else } para reproducirlos de forma consecutiva.

Para cargar en una matriz, cree un nuevo archivo plist (haga clic con el botón derecho en el árbol de directorios -> Agregar -> Nuevo archivo "y encuentre una lista de propiedades allí; nombre la lista de sonidos del archivo. en él donde dice "Diccionario" de forma predeterminada, vaya a "Tipo de valor" y seleccione "Matriz" ... Si mira hacia la derecha de esa línea, verá un pequeño botón de 3 barras, haga clic en que añadir a su primer artículo Si ahora se añade un elemento a la vez, "track01", "track02", etc ... uno por línea

Este código va en su archivo .h:..

NSArray* soundsList; 

Este código va dentro de ti r archivo .m:

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

matrices siempre comienzan en el índice # 0 ... por lo que si usted tiene 5 pistas, track01 sería el índice 0, track02 sería el índice 1 y así sucesivamente. Si desea sondear rápidamente su matriz para ver lo que hay en ella, puede añadir este fragmento de código:

int i = 0; 

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

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

} 

Todo lo que hace es contar cuántos elementos están en la matriz (es decir, 5 o 10 o sin embargo muchas canciones) y objectAtIndex: devolverán el objeto al número de índice que envíe.

Para reproducir con espalda que usted acaba de poner la sentencia if-then en el método audioPlayerDidFinishPlaying

Si desea reproducir el archivo, que puede hacer:

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

donde YOURINDEXNUMBER es el track # que quieras tocar (recuerda, 0 = track01, 1 = track02, etc)

Si necesitas ayuda para configurar las variables en tu archivo .h, avísame y te guiaré por ello.Además, recuerde lanzar theAudio en su método dealloc para que lo libere cuando el programa finalice.

0

En su código U puede recuperar su reproductor y reproducir el sonido nuevamente en audioPlayerDidFinishPlaying y realizar un seguimiento de la cantidad de pistas (usando Counter).

Haciendo código acondicionado u ur gestionar jugador para jugar en varias ocasiones pista 10 y otra vez .....

Para mayor funcionalidad u obtener Referencia de AVAudio clase Jugador referencia ...

Para mejor aspecto u poner botón diferente y volumen personalizado rotar noob .... utilizando CoreAnimation Class ....

Best Of Luck

Cuestiones relacionadas