«

js加载所有图片资源,加载完毕再进行后续动作

时间:2024-2-20 11:32     作者:韩俊     分类: Javascript


js加载所有图片资源,加载完毕再进行后续动作。

JFunction.PreLoadData = function (url) {
    if (typeof url == 'undefined') {
        url = '';
    }
    var loadedNum = 0;//已加载资源数量
    var resourceNum = 0;//资源数量
    var postAction = function () {
    };//资源加载完成后的回调函数
    function imageLoadPost() {//每成功加载一个图片执行一次
        loadedNum++;
        if (loadedNum >= resourceNum) {//全部图片文件加载完后,继续加载声音
            loadedNum = 0;
            resourceNum = 0;
            loadAudio();
        }
    }

    function audioLoadPost() {//每成功加载一个声音执行一次
        loadedNum++;
        if (loadedNum >= resourceNum) {//全部声音文件加载完后,执行回调函数
            postAction();
        }
    }

    function loadImage() {//加载图片
        for (var m2 in ResourceData.Images) resourceNum++;
        if (resourceNum == 0) {
            imageLoadPost();
        } else {
            for (var m2 in ResourceData.Images) {
                ResourceData.Images[m2].data = new Image();
                ResourceData.Images[m2].data.src = url + ResourceData.Images[m2].path;
                ResourceData.Images[m2].data.onload = function () {
                    imageLoadPost();
                }
                ResourceData.Images[m2].data.onerror = function () {
                    alert('图片资源 ' + ResourceData.Images[m2].data.src + ' 加载失败!');
                    return;
                }
            }
        }

    }

    function loadAudio() {//加载声音
        for (var m1 in ResourceData.Sound) resourceNum++;
        if (resourceNum == 0) {
            audioLoadPost();
        } else {
            for (var m1 in ResourceData.Sound) {
                ResourceData.Sound[m1].data = new Audio();
                var playMsg = ResourceData.Sound[m1].data.canPlayType('video/ogg');//测试浏览器是否支持该格式声音
                if ("" != playMsg) {
                    ResourceData.Sound[m1].data.src = url + ResourceData.Sound[m1].path;
                } else {
                    ResourceData.Sound[m1].data.src = url + ResourceData.Sound[m1].path;
                }
                ResourceData.Sound[m1].data.addEventListener("canplaythrough", function () {
                    audioLoadPost();
                }, false);
                ResourceData.Sound[m1].data.addEventListener("error", function () {
                    alert('声音资源 ' + url + ResourceData.Sound[m1].path + ' 加载失败!');
                    return;
                }, false);
            }
        }
    }

    loadImage();
    return {
        done: function (f) {
            if (f) postAction = f;
        }
    }
};

标签: javascript

热门推荐