2011-09-24 23 views

risposta

1

C'è un esempio di come fare questo nel documentation (vedi Demo 4a). Il metodo play accetta un oggetto come argomento. Quell'oggetto contiene un insieme di opzioni. Una di queste opzioni è una funzione di callback onfinish:

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

L'opzione multiShotEvents deve essere impostato a true a causare l'evento onfinish al fuoco al termine di ogni suono. Per impostazione predefinita, si attiva solo quando i suoni sono finiti.

È possibile mettere in coda tutti i suoni desiderati in questo modo.

+0

come farlo con 10 canzoni come o più di 2? – averbaher

1

ci ho messo come 3 ore per capire .. ma qui è:

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

-1 come non segue il principale di DRY, la funzione di coda ricorsiva (si veda la [sopra risposta] (http://stackoverflow.com/a/10911630/1095883) per il metodo) dovrebbe essere usata. –

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

vassoio uso ricorsione, l'unico problema può verificarsi, quando in ordine si mette due volte lo stesso suono (catena essere infinito)

1

Oltre alla risposta di Ashot e tutti gli altri, è possibile impostare la funzione OnFinish quando si crea il suono, non solo quando si gioca, per esempio:

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

... e se è necessario modificare la funzione OnFinish una volta che il suono è già in riproduzione, è possibile farlo in questo modo:

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

Si noti che appartiene a 'createSound()'. – user1063287