2015-03-16 2 views
0

Je voudrais lancer une fonction à la fin de mon son, ce code fonctionne:OnFinish sur objet SoundManager global

var mysound; 

var next = function(){ 
alert('end'); 
}; 

soundManager.onready(function() { 

    mysound = soundManager.createSound({ 
     id:'foo', 
     url:'http://soundbible.com/grab.php?id=2077&type=mp3' 
    }) 
    mysound.play({onfinish:next}); 
    // change to this 
    // mysound.play(); 
}); 
// in another .js 
// mysound.onfinish(next) // doesn't work 
// mysound.prototype.options.onfinish = next // doesn't work 

Je voudrais faire quelque chose comme je commente.

code on jsfiddle

+0

Supprimez '' var' avant mysound' pour le rendre global (va de même pour 'next', probablement) – blex

Répondre

0

Le problème est que MySound tente d'assigner le OnFinish avant qu'il ne soit réglé sur la valeur correcte.

var mysound; 

var next = function(){ 
alert('end'); 
}; 
function importedFromOtherFile(mysound) { 
    mySound.onfinish(next); 
} 

soundManager.onready(function() { 

    mysound = soundManager.createSound({ 
     id:'foo', 
     url:'http://soundbible.com/grab.php?id=2077&type=mp3' 
    }) 
    mysound.play({onfinish:next}); 
    // change to this 
    functionImportedFromOtherFile(mysound); 
}); 

si vous voulez qu'il soit dans un autre fichier, voir si vous pouvez lui donner un rappel ou de jeter un même MySound après qu'il est mis

+0

Je vais essayer' soundManager.onready (function() {mySound.onfinish (suivant);} ' –

+0

qui devrait fonctionner aussi bien –