2013-04-11 37 views
0

有沒有一種方法可以在沒有緩存的情況下循環SoundManager,因此每次都強制重新加載源音頻文件?我可以讓它循環,但我不能讓它不緩存。循環音頻在沒有緩存的SoundManager中

<script type="text/javascript"> 
soundManager.url = '../../swf/soundmanager2.swf'; 
soundManager.debugMode = true; 
soundManager.consoleOnly = true; 

soundManager.onload = function() { 
soundManager.createSound({ 
id:'mySound1', 
url:'path/to/audio.mp3', 
stream: true 
}); 
loopSound('mySound1'); 
} 

function loopSound(soundID) { 
window.setTimeout(function() { 
soundManager.play(soundID,{onfinish:function(){loopSound(soundID);}}); 
},1); 
}</script> 

回答

0

現在,這是我想出了一個解決方案:

<script> 
soundManager.setup({ 
    url: '../swf/', 
    // optional: use 100% HTML5 mode where available 
    // preferFlash: false, 
    onready: function() { 
    var sound = soundManager.createSound({ 
id: 'mySound1', 
url: 'path/to/audio.mp3', 
onfinish: function() { 
    soundManager._writeDebug(this.id+' has finished the current track, now loading next track.'); 
    // destroy this sound 
    this.unload(); 
    soundManager.createSound({ 
id: 'mySound1', 
url: 'path/to/audio.mp3', 
}); 
    soundManager.play('mySound1'); 
}, 
autoPlay: true 
}); 

    } 
}); 
</script> 
0

更改ID:爲不同的人會避免需要清除緩存。

即使URL的路徑不同,如果ID相同,歌曲也會重播。

如果改變:

id: 'mySound1', 

所以這是每一個獨特的賽道,新的歌曲將發揮獨特。

id: 'mySound1'+id, 
0
... 
onload: function(){ 
        if(this.readyState==2){ //ERROR HTML5 player 
         console.log('ERRORS readyState'); 
         stop_play(id); // function stop play id 
         start_play(url); // function start play 
        } 
}, 
... 
+1

歡迎堆棧溢出。請在回答中添加一些描述,以解釋爲什麼這應該適用於該問題 – Mikkel 2016-12-13 20:30:31