2016-11-16 3 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

次の行が欠落していた、そしてすべてのことは、動作するようにそのコードのために必要とされたされています

、それはhandleComplete関数に出

を変数の割り当てを移動する方が良いでしょう

queue.installPlugin(createjs.Sound); 

完全な作業コード次のようになります。

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

ありがとうございました!ロードするサウンドが1つだけの場合はうまく動作しますが、マニフェストとしてロードするのに必要なmp3がいくつかあるためです。私の問題は本当にばかげたものでした。私はそれをすべて働かせるために1行を入れることを忘れました。このポストを見て、答えを投稿する時間をとってくれてありがとう! – anton980