我正在使用 preloadJS 1.0 加载 SoundJS 1.0 音频精灵。audiosprite 分为 4 个声音,我称之为 a、b、c 和 d。(在代码的其他地方,它随机播放 4 种声音中的哪一种。)
这是基本的加载和声明代码:
var queue = new createjs.LoadQueue();
createjs.Sound.alternateExtensions = ["mp3"];
queue.addEventListener("complete",handleComplete);
//load audiosprite and define start/duration times with variables.
queue.loadFile({src:path,data:{
audioSprite:[
{id:sound+"a", startTime:aStart, duration: aDur},
{id:sound+"b", startTime:bStart, duration: bDur},
{id:sound+"c", startTime:cStart, duration: cDur},
{id:sound+"d", startTime:dStart, duration: dDur},
]
}});
//register the 4 audioSprite sounds as individual sound instances
myAudio[sound+"a"] = createjs.Sound.createInstance(sound+"a");
myAudio[sound+"b"] = createjs.Sound.createInstance(sound+"b");
myAudio[sound+"c"] = createjs.Sound.createInstance(sound+"c");
myAudio[sound+"d"] = createjs.Sound.createInstance(sound+"d");
当我加载声音时,我得到: Uncaught TypeError: Cannot read property '1' of null
如果我注释掉最后 3 行并只创建 1 个实例(例如声音 +“a”),声音加载并且我没有收到错误,但显然我只得到 4 个部分中的 1 个。
我觉得问题是它不喜欢我像这样背靠背调用 createInstance 。这样做的正确方法是什么?