2011-09-24 22 views

Respuesta

1

Hay un ejemplo de cómo hacer esto en el documentation (ver la demostración 4a). El método play toma un objeto como argumento. Ese objeto contiene un conjunto de opciones. Una de esas opciones es una función de devolución de llamada onfinish:

soundManager.play('firstSound',{ 
    multiShotEvents: true, 
    onfinish:function() { 
     soundManager.play('secondSound'); 
    } 
}); 

La opción multiShotEvents tiene que ajustarse a true para causar el evento onfinish para disparar al término de cada sonido. Por defecto, solo se disparará una vez que los sonidos hayan finalizado.

Puede poner tantos sonidos como desee de esta manera realmente.

+0

¿Cómo lo hacen con 10 canciones como o más de 2? – averbaher

1

Me tomó como 3 horas para averiguar .. pero aquí está:

soundManager.play('sound1',{ 
    multiShotEvents: true, 
    onfinish:function() { 
    soundManager.play('sound2',{ 
     multiShotEvents: true, 
     onfinish:function() { 
     soundManager.play('sound3'); 
     } 
    }); 
    } 
}); 
+0

-1 ya que no sigue la función de cola recursiva DRY principal (consulte la [respuesta anterior] (http://stackoverflow.com/a/10911630/1095883) para el método) debe utilizarse. –

6
var soundArray = ['sound1', 'sound2', ...]; 
var chain = function (sound) { 
soundManager.play(sound, { 
    multiShotEvents: true, 
    onfinish: function() { 
     var index = soundArray.indexOf(sound); 
     if (soundArray[index + 1] !== undefined) { 
      chain(soundArray[index + 1]); 
     } 
    }}); 
}; 

chain(soundArray[0]) 

bandeja de uso recursividad, el único problema puede ocurrir, cuando en conjunto se pone dos veces al mismo sonido (cadena ser infinito)

1

Además de la respuesta de Ashot y todos los demás, se puede ajustar la función OnFinish cuando se crea el sonido, no sólo cuando lo toca, por ejemplo:

var demo2Sound = soundManager.createSound({ 
url: '../mpc/audio/CHINA_1.mp3', 
onfinish: function() { 
    soundManager._writeDebug(this.id + ' finished playing'); 
} 
}); 

... y si es necesario cambiar la función OnFinish una vez que el sonido ya se está reproduciendo, puede hacerlo de esta manera:

demo2Sound._onfinish = function(){ 
    //now this function will override the previous handler 
}; 
+0

Buena nota de que pertenece dentro de 'createSound()'. – user1063287