Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Audio SoundJS-将声音分配给变量_Audio_Jquery Animate_Createjs_Soundjs - Fatal编程技术网

Audio SoundJS-将声音分配给变量

Audio SoundJS-将声音分配给变量,audio,jquery-animate,createjs,soundjs,Audio,Jquery Animate,Createjs,Soundjs,我正在使用loadManifest加载几个mp3文件,但我对如何将加载的声音分配给变量感到有点困惑。我可以在这里使用createInstance吗 我的代码当前如下所示: var myRoot = this; var queue = new createjs.LoadQueue(); queue.addEventListener("fileload", handleFileLoad); queue.addEventListener("complete", handleComplete); q

我正在使用loadManifest加载几个mp3文件,但我对如何将加载的声音分配给变量感到有点困惑。我可以在这里使用createInstance吗

我的代码当前如下所示:

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创建声音的实例,并将其分配给以后可以轻松访问的变量?我需要先注册声音才能注册吗


谢谢大家!

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播放它们,而不是使用自定义播放方法


此外,如果您使用清单加载器加载声音,则不需要单独注册每个声音,因为它们将自动注册。

缺少以下行,这是该代码工作所需的全部内容:

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();
}

谢谢你的回答!如果我只需要加载一个声音,那么这非常有效,但是因为有几个mp3需要作为清单加载它们。我的问题真的很愚蠢——我只是忘了写一行代码来让它正常工作。非常感谢你花时间看这篇文章并给出答案!