SoundJS - 将声音分配给变量
SoundJS - assigning sounds to variables
我正在使用 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)
方法returns声音对象的一个实例。
所以你可以这样做:
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();
}
我正在使用 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)
方法returns声音对象的一个实例。
所以你可以这样做:
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();
}