2016-11-16 56 views
1

我使用loadManifest加載了幾個mp3文件,但我對如何將加載的聲音分配給變量有點困惑。我可以在這裏使用createInstance嗎?SoundJS - 分配變量的聲音

我的代碼目前看起來是這樣的:

var myRoot = this; 

var queue = new createjs.LoadQueue(); 
queue.addEventListener("fileload", handleFileLoad); 
queue.addEventListener("complete", handleComplete); 

queue.loadManifest([{ src: "media/file1.mp3", id: "sound1" }, 
        { src: "media/file2.mp3", id: "sound2" }, 
        { src: "media/file3.mp3", id: "sound3" }]); 

function handleFileLoad(event) {  
    // assign each sound to unique variable 
    myRoot.sound1 = createjs.Sound.createInstance("sound1"); 
    myRoot.sound2 = createjs.Sound.createInstance("sound2"); 
    myRoot.sound3 = createjs.Sound.createInstance("sound3"); 
} 

function handleComplete(event) { 
    // start playing sound1 
    myRoot.sound1.play(); 
} 

如何使用它的ID我創造一個良好的實例,並將其分配給我可以輕鬆地在稍後訪問的變量?在我能夠做到這些之前需要註冊聲音嗎?

謝謝!

回答

1

以下行失蹤,並認爲需要爲代碼的所有工作:

queue.installPlugin(createjs.Sound); 

這一點,最好是移動變量賦值出handleComplete功能

完整的工作代碼看起來像這樣:

var myRoot = this; 

var queue = new createjs.LoadQueue(); 
queue.installPlugin(createjs.Sound); 
queue.addEventListener("complete", handleComplete); 

queue.loadManifest([{ src: "media/file1.mp3", id: "sound1" }, 
        { src: "media/file2.mp3", id: "sound2" }, 
        { src: "media/file3.mp3", id: "sound3" }]); 

function handleComplete(event) { 
    // assign each sound to unique variable 
    myRoot.sound1 = createjs.Sound.createInstance("sound1"); 
    myRoot.sound2 = createjs.Sound.createInstance("sound2"); 
    myRoot.sound3 = createjs.Sound.createInstance("sound3"); 
    // start playing sound1 
    myRoot.sound1.play(); 
} 
1

createjs.Sound.play(id)方法返回聲音對象的一個​​實例。

所以,你可以這樣做:

myRoot.sound1 = createjs.Sound.play(id, [createjs.Sound.INTERRUPT_ANY], [delay], [offset], [loops], [volume]); 

在此之後,你可以使用引用自由操縱的聲音。例如:

myRoot.sound1.volume = 0.5; 
myRoot.sound1.addEventListener("complete", handleSoundComplete); 
myRoot.sound1.play(); 
myRoot.sound1.stop(); 

利用這一點,你還有其他的幾種可能性,比如保存聲音的實例在數組中重複使用它們,或者您可以通過,而不是使用自定義的播放方法及其ID發揮他們所有的時間。另外,如果您使用清單加載程序加載聲音,您不需要單獨註冊每個聲音,因爲它們將被自動註冊。

+0

謝謝你的回答!如果我只加載一個聲音,這很好用,但是因爲有幾個mp3需要將它們加載爲清單。我的問題是一個非常愚蠢的 - 我只是忘了包括一條線,使其一切工作。非常感謝您花時間看這篇文章並發表一個答案! – anton980