Open WindowsTV opened 1 year ago
This is my temporary fix, overridden some functions and added a new:
createjs.Sound.registerSounds = function (sounds, basePath) {
console.log("AUDIO HI");
var returnValues = [];
if (sounds.path) {
if (!basePath) {
basePath = sounds.path;
} else {
basePath = basePath + sounds.path;
}
sounds = sounds.manifest;
// TODO document this feature
}
for (var i = 0, l = sounds.length; i < l; i++) {
if(sounds[i].data.isAudioSprite === true){
console.log(sounds[i]);
var _idFromSrc = sounds[i].src.split("/");
var _loadItem = {id:(_idFromSrc[1].split(".")[0] + "-JSON"), type:"json", src:(basePath + sounds[i].src)};
var _queue = new createjs.LoadQueue();
_queue.on("complete", createjs.Sound.parseLoadedAudioSprite, null, true, {loadQue: _queue, id: _loadItem.id, src: (basePath + sounds[i].src)});
_queue.loadFile(_loadItem);
}else returnValues[i] = createjs.Sound.registerSound(sounds[i].src, sounds[i].id, sounds[i].data, basePath, sounds[i].defaultPlayProps);
}
console.log(returnValues);
return returnValues;
};
createjs.Sound.parseLoadedAudioSprite = function (e, payload) {
let _json = payload.loadQue.getResult(payload.id);
let _temp = {
src:payload.src,
data: _json.data
};
createjs.Sound.registerSound(_temp.src, payload.id.split("-")[0], _temp.data, null, null);
};
I don't think it's a good one because it could break people's loading schemes.
I am trying to load in an audioSprite as a JSON in the current version of createjs/soundjs. I am not sure if this is supported but let explain what happens.
Using the code above loads in the WAV audio file and appears to actually apply the id to the file but when I go to play the audio it says the audio was never loaded in and tried to load it again at the wrong directory.
A quick fix would be load the JSON in on another loadQue then pushing it into the sound que.