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

 更新时间:2011年01月01日 18:20:44   作者:  
先定义一个图片的数组,然后通过image的onload事件来计算,注意,onload在ie和火狐有所不同。
通过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>

相关文章

  • JAVA面试题 static关键字详解

    JAVA面试题 static关键字详解

    这篇文章主要介绍了JAVA面试题 浅析Java中的static关键字,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 计算文本域剩佘长度的js代码

    计算文本域剩佘长度的js代码

    计算文本域剩佘长度js,以前脚本之家也发过,这段代码也算是比较简单的一种实现方法。
    2010-10-10
  • js+div+css下拉导航菜单完整代码分享

    js+div+css下拉导航菜单完整代码分享

    本文主要分享了js+div+css下拉导航菜单的完整代码。可直接复制保存到HTML文件就可以体验效果。下面跟着小编一起来看下吧
    2016-12-12
  • D3.js实现文本的换行详解

    D3.js实现文本的换行详解

    相信大家都知道在SVG中添加文本是使用text元素。但这个元素不能够自动换行,超出的部分就显示不出来了,怎么办呢?下面通过这篇文章来给大家详细介绍下实现的过程。
    2016-10-10
  • JS实现获取毫秒值及转换成年月日时分秒的方法

    JS实现获取毫秒值及转换成年月日时分秒的方法

    这篇文章主要介绍了JS实现获取毫秒值及转换成年月日时分秒的方法,结合实例形式分析了javascript常见的Date()日期时间获取、转换相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • javascript appendChild,innerHTML,join性能比较代码

    javascript appendChild,innerHTML,join性能比较代码

    在实际应用中,应该避免直接用innerHTML,对于大量的字符连接运算,应该考虑先运算再输出。
    2009-08-08
  • 使用js去除字符串内所带有空格的三种方法

    使用js去除字符串内所带有空格的三种方法

    在前端开发的过程中,我们经常会遇到需要对于输入的字符串进行格式化处理,这篇文章主要给大家介绍了关于使用js去除字符串内所带有空格的三种方法,需要的朋友可以参考下
    2023-10-10
  • JS错误处理与调试操作实例分析

    JS错误处理与调试操作实例分析

    这篇文章主要介绍了JS错误处理与调试操作,结合实例形式分析了JavaScript错误捕获、处理、调试工具、断点调试等相关操作技巧,需要的朋友可以参考下
    2020-04-04
  • javascript 在firebug调试时用console.log的方法

    javascript 在firebug调试时用console.log的方法

    当你使用console.log()函数时,下面的firebug一定要打开,不然这函数在用firefox运行时无效且影响正常程序,如果用IE打开,将会出错
    2012-05-05
  • 在html中引入外部js文件,并调用带参函数的方法

    在html中引入外部js文件,并调用带参函数的方法

    下面小编就为大家带来一篇在html中引入外部js文件,并调用带参函数的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10

最新评论