使用Preloadjs加载声音失败,但不会调用错误事件

时间:2018-03-15 19:18:47

标签: javascript createjs soundjs preloadjs

我使用以下代码使用CreateJS库加载和播放声音。这样可以正常工作,但问题是当无法加载文件时都不会调用回调,例如服务器上不存在声音(这是一个有效的用例)。

如何更改此代码,以便在加载文件时发生错误时,它会调用我的错误回调函数?

// define example play sound function
function playMySound(loadFileName, callbackDone, callbackError){

    var queue = new createjs.LoadQueue(false);      
    queue.installPlugin(createjs.Sound);  

    queue.on("fileload", function(evt){
        var instance = createjs.Sound.play(loadFileName, createjs.Sound.INTERRUPT_EARLY, 0, 0, false);

        instance.addEventListener("complete", function(){
            createjs.Sound.removeSound(loadFileName);  

            // call done callback
            if(callbackDone){
                callbackDone();
            }

        }); 
    });
    queue.on("error", function(evt){
        console.error("Sound could not be loaded");

        // call error callback
        if (callbackError){
            callbackError();
        }
    });

    queue.loadFile(loadFileName, false);
    queue.load();

}



//define callback functions
var callbackDone = function(){console.log("Done playing..")};
var callbackError = function(){return alert('This sound does not exist');};

// try to play sound
playMySound("/path/to/my/sound.mp3",callbackDone,callbackError);

0 个答案:

没有答案