首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SoundJS -为变量分配声音

SoundJS -为变量分配声音
EN

Stack Overflow用户
提问于 2016-11-16 15:35:00
回答 2查看 580关注 0票数 1

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

我的代码当前如下所示:

代码语言:javascript
复制
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创建声音实例,并将其赋值给以后可以轻松访问的变量?我需要注册声音才能做到这一点吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-16 20:46:29

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

代码语言:javascript
复制
queue.installPlugin(createjs.Sound); 

这一点,最好将变量赋值移出到handleComplete函数

完整的工作代码如下所示:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2016-11-16 16:26:24

createjs.Sound.play(id)方法返回声音对象的实例。

所以你可以:

代码语言:javascript
复制
myRoot.sound1 = createjs.Sound.play(id, [createjs.Sound.INTERRUPT_ANY], [delay], [offset], [loops], [volume]);

在此之后,您可以使用引用来自由地操作声音。例如:

代码语言:javascript
复制
myRoot.sound1.volume = 0.5;
myRoot.sound1.addEventListener("complete", handleSoundComplete);
myRoot.sound1.play();
myRoot.sound1.stop();

通过使用它,您还可以使用其他几种可能性,比如将声音实例保存在数组中以重用它们,或者可以随时通过它们的ID来播放它们,而不是使用自定义play方法。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40636088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档