`
xidajiancun
  • 浏览: 457916 次
文章分类
社区版块
存档分类
最新评论

学习HTML5开发RPG游戏第二步>资源预加载

 
阅读更多

为什么需要资源预加载呢?这是因为如果等到使用时才加载资源,当资源过大或网络不好时,加载时间过长,会影响用户体验。资源预加载可以一定程度上改善这种情况。

我们这里需要预加载的资源包括图片和声音,资源定义示例如下:

var ResourceData= {
    Images:{
        //path:文件相对路径,picNum:当前图片中宽和高包含的小图片数,cellSize:小图片的宽和高,data:存放加载的图片数据。
        images001:{path:"images/images001.png", picNum:{WNum:2,HNum:6},cellSize:{width:32,height:32}, data:null}
        ,images002:{path:"images/images002.png", picNum:{WNum:1,HNum:1},cellSize:{width:96,height:96}, data:null}
    },
    Sound:{
        //soundName:声音文件名称,path:文件夹相对路径,data:存放加载的声音数据。由于各种浏览器对声音格式的支持不一致,声音文件格式有MP3和OGG两种
        sound001:{soundName:"sound001",path:"sound/", data:null}
        ,sound002:{soundName:"sound002",path:"sound/", data:null}
    }
}


资源定义好后,我们就可以实现预加载了,加载代码示例如下:

JFunction.PreLoadData = function () {
    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++;
        for (var m2 in ResourceData.Images) {
            ResourceData.Images[m2].data = new Image();
            ResourceData.Images[m2].data.src = ResourceData.Images[m2].path;
            ResourceData.Images[m2].data.onload = function () {
                imageLoadPost();
            }
            ResourceData.Images[m2].data.onerror = function () {
                alert("资源加载失败!")
                return;
            }
        }
    }
    function loadAudio(){//加载声音
        for (var m1 in ResourceData.Sound)  resourceNum++;
        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= ResourceData.Sound[m1].path + ResourceData.Sound[m1].soundName + ".ogg";
            } else {
                ResourceData.Sound[m1].data.src= ResourceData.Sound[m1].path + ResourceData.Sound[m1].soundName + ".mp3";
            }
            ResourceData.Sound[m1].data.addEventListener("canplaythrough", function () {
                audioLoadPost();
            }, false);
            ResourceData.Sound[m1].data.addEventListener("error", function () {
                alert("资源加载失败!")
                return;
            }, false);
        }
    }
    loadImage();
    return {
        done:function (f) {
            if (f)postAction = f;
        }
    }
};

调用方法如下:

JFunction.PreLoadData().done(function(){
    //所有资源加载完成后,执行该处代码
});

现在所有资源都加载好,下一步就是使用这些资源做出我们心中的游戏了。

分享到:
评论

相关推荐

    Java资源包01

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    JAVA上百实例源码以及开源项目源代码

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java开源包5

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包4

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包7

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    JAVA上百实例源码以及开源项目

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    java开源包1

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包11

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包3

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包6

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包10

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包8

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包9

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java开源包101

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (<jcaptcha:image label="Type the text "/> ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

Global site tag (gtag.js) - Google Analytics