JavaScript 计算图片加载数量的代码


Posted in Javascript onJanuary 01, 2011

通过JavaScript 来计算当前图片加载的张数。
原理:
先定义一个图片的数组,然后通过image的onload事件来计算,注意,onload在ie和火狐有所不同。
最后需要一个进度条与之结合即可。
这个脚本在做游戏的地方用得比较多。
演示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title></title> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<style type="text/css"> 
*{ 
margin:0; 
padding:0; 
} 
body{font-size:12px;} 
/*不带文字*/ 
.progress{ 
border:0; 
width: 152px; 
height: 18px; 
background:url(http://www.cssrain.cn/demo/makeProgress/img/progress.gif) no-repeat -100px 50%; 
} 
/*带文字显示*/ 
.progressbar_3{ 
width:152px; 
position:relative; 
height:18px; 
text-align:center; 
position:relative; 
color:#222; 
} 
.progressbar_3 .text{ 
width:152px; 
position:absolute; 
left:0; 
top:0; 
height:18px; 
line-height:18px; 
z-index:100; 
} 
.progressbar_3 .progress{ 
width:152px; 
position:absolute; 
left:0; 
top:0; 
height:18px; 
z-index:10; 
} 
</style> 
<script language="javascript"> 
var PicAr=[['http://www.cssrain.cn/images/bg.jpg','背景'], 
['http://www.cssrain.cn/images/c1.png','卡片'], 
['http://www.cssrain.cn/images/c2.png','卡片'], 
['http://www.cssrain.cn/images/c3.png','卡片'], 
['http://www.cssrain.cn/images/c4.png','卡片'], 
['http://www.cssrain.cn/images/c5.png','卡片'], 
['http://www.cssrain.cn/images/c6.png','卡片'], 
['http://www.cssrain.cn/images/c7.png','卡片'], 
['http://www.cssrain.cn/images/c8.png','卡片'], 
['http://www.cssrain.cn/images/sephira_software.png','卡片栏'], 
['http://www.cssrain.cn/images/tragic_phantom.png','剪草机'], 
['http://www.cssrain.cn/images/yahoo.gif','游戏LOGO界面'], 
['http://www.cssrain.cn/images/Control/Pic2.jpg','简介背景'], 
['http://www.cssrain.cn/demo/24_pages/image1.gif','image1'], 
['http://www.cssrain.cn/demo/24_pages/image2.gif','image2'], 
['http://www.cssrain.cn/demo/24_pages/meneame.jpg','简介背景'], 
['http://www.cssrain.cn/demo/24_pages/25css.jpg','简介背景'] 
]; 
var LoadAccessNum=0; //载入成功的图片数量 
function $(id){ 
return(document.getElementById(id)); 
} 
/*--------以下是载入图片进度条--------*/ 
var Browser=new Object(); 
Browser.userAgent=window.navigator.userAgent.toLowerCase(); 
Browser.ie=/msie/.test(Browser.userAgent); 
Browser.Moz=/gecko/.test(Browser.userAgent); 
function LevelLoadProgress(){ 
var PicNum=PicAr.length; 
$('text').innerHTML='正在准备载入游戏素材...'; 
$("progress").style.backgroundPosition= "-150px 50%"; 
for(n=0;n<=PicNum-1;n++){ 
Imagess(n,PicAr[n][0],"img"+n,checkimg); 
} 
} 
function Imagess(n,url,imgid,callback){ 
var val=url; 
var img=new Image(); 
if(Browser.ie){ 
img.onreadystatechange =function(){ 
if(img.readyState=="complete"||img.readyState=="loaded"){ 
callback(img,imgid,n); 
} 
} 
}else if(Browser.Moz){ 
img.onload=function(){ 
if(img.complete==true){ 
callback(img,imgid,n); 
} 
} 
} 
//如果因为网络或图片的原因发生异常,则显示该图片 
img.onerror=function(){img.src=val;img.onreadystatechange=null;} 
img.src=val; 
} 
//检测图片加载 
function checkimg(obj,imgid,n){ 
LoadAccessNum+=1; 
var PicNum=PicAr.length,ReduceX=150/PicNum,imgFlagHeadLeft=139-LoadAccessNum*ReduceX; 
$('text').innerHTML='载入:'+PicAr[n][1]+'('+LoadAccessNum+'/'+PicNum+')'; 
var a = parseInt(LoadAccessNum*ReduceX) ; 
$("progress").style.backgroundPosition= (a-150)+"px 50%"; 
window.status=LoadAccessNum; 
if(LoadAccessNum==PicNum){ 
$('dFlagMeter').style.display='none'; 
LoadAccess(); 
return false 
} 
} 
/*--------以上是载入图片进度条--------*/ 
//调用载入图片进度条LevelLoadProgress(),载入成功后执行LoadAccess(); 
function LoadAccess(){ 
$('dFlagMeter2').style.display='block'; 
} 
</script> 
</head> 
<body onload="document.execCommand('BackgroundImageCache',false,true);LoadAccess();"> 
<div style="position: absolute; z-index: 255; left: 260px; top: 150px;" id="dFlagMeter"> 
<table width="500" height="40" cellspacing="0" cellpadding="0" bordercolor="#000000" border="0"> 
<tbody><tr> 
<td width="343" valign="top"> 
<div class="progressbar_3"> 
<div id="text" class="text">正在准备载入游戏素材...</div> 
<img id="progress" class="progress" width="152" height="18" title="100%" alt="100%" src="http://www.cssrain.cn/demo/makeProgress/img/bg.gif" style="background-position: -150px 50%;"/> 
</div> 
</td> 
</tr> 
</tbody> 
</table> 
</div> 
<div style="display:none;position: absolute; z-index: 254; left: 260px; top: 150px;" id="dFlagMeter2">载入成功!</div> 
<script type="text/javascript"> 
LevelLoadProgress(); 
</script> 
</body> 
</html>
Javascript 相关文章推荐
对象的类型:本地对象(1)
Dec 29 Javascript
Node.js和PHP根据ip获取地理位置的方法
Mar 14 Javascript
jquery动态分页效果堪比时光网
Sep 25 Javascript
js获取会话框prompt的返回值的方法
Jan 10 Javascript
jquery实现动态操作select选中
Feb 11 Javascript
js实现感应鼠标图片透明度变化的方法
Feb 20 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
May 11 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
Vuex之理解Mutations的用法实例
Apr 19 Javascript
如何理解Vue的.sync修饰符的使用
Aug 17 Javascript
微信小程序实现animation动画
Jan 26 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
Jul 15 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
Jan 01 #Javascript
基于jQuery架构javascript基础体系
Jan 01 #Javascript
jQuery技巧总结
Jan 01 #Javascript
js中查找最近的共有祖先元素的实现代码
Dec 30 #Javascript
Js 弹出框口并返回值的两种常用方法
Dec 30 #Javascript
JavaScript之appendChild、insertBefore和insertAfter使用说明
Dec 30 #Javascript
Javascript事件热键兼容ie|firefox
Dec 30 #Javascript
You might like
PHP源码之explode使用说明
2011/08/05 PHP
PHP防范SQL注入的具体方法详解(测试通过)
2014/05/09 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
PHP7.3.10编译安装教程
2019/10/08 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
2019/11/04 PHP
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
javascript常用函数(2)
2015/11/05 Javascript
js实现继承的5种方式
2015/12/01 Javascript
JS中的二叉树遍历详解
2016/03/18 Javascript
简单实现jQuery进度条轮播实例代码
2016/06/20 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
Google 爬虫如何抓取 JavaScript 的内容
2017/04/07 Javascript
bootstrap可编辑下拉框jquery.editable-select
2017/10/12 jQuery
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
vue环形进度条组件实例应用
2018/10/10 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
深入理解python try异常处理机制
2016/06/01 Python
详解python中的线程
2018/02/10 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
对web.py设置favicon.ico的方法详解
2018/12/04 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
Python 模拟生成动态产生验证码图片的方法
2020/02/01 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
naturalizer加拿大官网:美国娜然女鞋
2017/04/04 全球购物
百日安全活动总结
2014/05/04 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server