Cocos2d reproduce 2 files de música de background diferentes o loop playEffect

Necesito tener una música de background para la escena y una música de background para un personaje, pero tengo que detenerlo cuando el personaje hace algunas acciones.

Para este problema tengo que opciones:

  1. Reproduce 2 files de música de background al mismo time y detén el relacionado con el personaje
  2. Coloque un efecto de sonido.

¿Cuál de estos es 2 posible y recomendado?

¡Saludos!

Dices que estás usando cocos2d, así que asumí que también estás utilizando SimpleAudioEngine provisto con cocos2d.

Con SimpleAudioEngine , no es posible reproducir 2 pistas de background. Es posible hacer efectos de bucle con algunas pequeñas modificaciones:

  • Proporcione un -(int) playEffect:(NSString*) file loop:(BOOL) loop ;
  • En este método, deberás descubrir qué efecto de reproducción normalmente hace. Lo que está buscando es el ALUInt que se utiliza como el controller para el sonido. Mantenga una reference a esto. Lo necesitarás para detener el ciclo.
  • Proporcione un -(void) stopEffectWithHandle:(int) handle que lo -(void) stopEffectWithHandle:(int) handle y lo devuelva a OpenAL para detener el efecto.

-EDITAR-

Aquí hay un código para poner en bucle un efecto:

 int handle = [[SimpleAudioEngine shanetworkingEngine] playEffect:name]; if (loop) { alSourcei(handle, AL_LOOPING, 1); } return handle; 

Y algunos para detener los efectos:

 [[SimpleAudioEngine shanetworkingEngine] stopEffect:handle]; 

@ToughGuy comenta sobre @JamesWebster la respuesta es correcta, me encontré con el mismo problema con esa solución.

Resolví este problema usando este enfoque de esta publicación en el foro .

Juega efecto con:

 CDSoundSource *loopSound = [[SimpleAudioEngine shanetworkingEngine] soundSourceForFile:LOOPING_SOUND_FILENAME]; loopSound.looping = YES; [loopSound play]; 

Y deténgalo con:

 [loopSound stop]; 

Espero que esto ayude.