学习HTML5开发RPG游戏第二步>资源预加载
来源:互联网 发布:藏剑二少捏脸数据 编辑:程序博客网 时间:2024/05/01 21:50
为什么需要资源预加载呢?这是因为如果等到使用时才加载资源,当资源过大或网络不好时,加载时间过长,会影响用户体验。资源预加载可以一定程度上改善这种情况。
我们这里需要预加载的资源包括图片和声音,资源定义示例如下:
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(){ //所有资源加载完成后,执行该处代码});
现在所有资源都加载好,下一步就是使用这些资源做出我们心中的游戏了。
0 0
- 学习HTML5开发RPG游戏第二步>资源预加载
- 学习HTML5开发RPG游戏第四步>游戏对象设计
- 学习HTML5开发RPG游戏第五步>游戏界面设计<一>
- 学习HTML5开发RPG游戏第五步>游戏界面设计<二>(结束)
- 学习HTML5开发RPG游戏第三步>基本对象设计<一>
- 学习HTML5开发RPG游戏第三步>基本对象设计<二>
- 学习HTML5开发RPG游戏第三步>基本对象设计<三>
- 学习HTML5开发RPG游戏第三步>基本对象设计<四>
- 学习HTML5开发RPG游戏第一步>准备
- HTML5游戏开发必备资源
- HTML5游戏开发必备资源
- 【Cocos2d-html5游戏引擎学习笔记(6)】自定义Cocos2d-html5加载资源Loading界面
- 【ipone开发学习】-2、利用现有资源第二步 硬盘安装Snow Leopard&Xcode
- Unity RPG游戏 资源地址
- html5游戏开发-零基础开发RPG游戏-开源讲座(一)
- html5游戏开发-零基础开发RPG游戏-开源讲座(一)
- html5游戏开发-零基础开发RPG游戏-开源讲座(二)-跑起来吧英雄
- html5游戏开发-零基础开发RPG游戏-开源讲座(三)-卷轴&对话实现
- 摇一摇看电影
- Oracle语句优化规则(二)
- 管理音频播放,音频焦点,输出设备切换AudiaoManager
- java多线程监听JMS、MQ队列
- 澄清一些概念
- 学习HTML5开发RPG游戏第二步>资源预加载
- ALV 参数与函数 总结
- Java编码需注意细节
- spring容器中的bean创建
- 2013年终总结--生活
- 算法导论 之 平衡二叉树 - 打印 - 递归[C语言]
- CString及string,char *与其他数据类型的转换和操作 .
- java 如何自定义异常 用代码展示 真心靠谱
- 让注册体验来得更简单点吧