亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

As+lightbox+js實現實時加載圖片進度

2024-09-06 12:31:23
字體:
來源:轉載
供稿:網友

  不久前在csdn的js板塊看到一個as+js+lightbox動態加載圖片顯示進度的程序,隨便幫改了下代碼。后面要幫女朋友搞她設計作品的展示時發現代碼中的flash只提供了成功加載時的回調函數,而如果圖片未找到或者剛開始加載時沒有什么提示。所以自己把swf反編譯了一下,修改了as腳本,使之擁有了4個回調,加載圖片開始,過程,成功加載和錯誤的回調,增強下用戶體驗O(∩_∩)O~

  效果如下

As+lightbox+js實現實時加載圖片進度

 

As+lightbox+js實現實時加載圖片進度

As+lightbox+js實現實時加載圖片進度
  
  下面列出as腳本,js腳本的主要代碼供大家學習下。lightbox效果已經繼承到了design.js文件里面了。


  as腳本部分,loadSwf.fla第一幀的腳本

//loadUrl:要加載的圖片地址URL//loading:加載過程反饋信息的js函數名 ,參數 function(p:完成百分比,loaded:已經加載的,total:總大小) ///Success:成功加載完成后執行的js函數名,參數 function(w:圖片原始長度,h:圖片原始寬)//Failure:加載失敗執行的函數名稱,參數 function(msg:錯誤信息)function loadPicture(loadUrl,loading,Success,Failure){    var _loc2 = random(1000000000);    _root.createEmptyMovieClip("loadMc" + _loc2, _root.getNextHighestDepth());//這里flash使用了一個類as.loadPic,在下面貼出代碼    new as.loadPic(_root["loadMc" + _loc2], loadUrl, function (ob){//成功時調用js傳遞進來的js回調函數,下面同理        new flash.external.ExternalInterface.call(Success,loadUrl, ob._width, ob._height);    }, function (loadN,loaded,total){//過程        new flash.external.ExternalInterface.call(loading, loadN, loaded,total);    }, function (err){//發生錯誤        new flash.external.ExternalInterface.call(Failure,err);    });} // End of the function//使用flash.external.ExternalInterface接口注冊給js調用的函數flash.external.ExternalInterface.addCallback("forJS", null, loadPicture);
 

loadPic.as源代碼

class as.loadPic{    function loadPic(ob, uri,Success, loadIng,Failure){        if (ob && uri){            var _loc2 = new MovieClipLoader();            var _loc1 = new Object();            var loadnum;            _loc1.onLoadStart = function (tmc){            };            _loc1.onLoadProgress = function (tmc, loadedBytes, totalBytes){                loadnum = int(loadedBytes / totalBytes * 100);                loadIng(loadnum,loadedBytes,totalBytes);            };            _loc1.onLoadComplete = function (tmc){            };            _loc1.onLoadInit = function (tmc){                if (Success && typeof(Success) == "function")Success(tmc);            };            _loc1.onLoadError = function (tmc, errc){                if (Failure && typeof(Failure) == "function")Failure(errc);            };            _loc2.addListener(_loc1);            _loc2.loadClip(uri, ob);        }     } }
 

design.js源代碼

if(typeof(Showbo)=="undefined")Showbo={};Showbo.Design={    lightBox:null,    dvPopDesign:null,    tool:null,    dvpic:null,    loading:null,    dvpro:null,    dvinfo:null,    newA:null,    step:100,    min:300,    pos:{x:0,y:0,ex:0,ey:0,drag:false},    /*Flash中調用的js函數*/    Start:function(){      this.dvpro.style.width="1%";	  this.dvinfo.innerHTML="準備下載,請等待...";    },    Loading:function(p,loaded,total){      this.dvpro.style.width=p+"%";	  this.dvinfo.innerHTML="已下載:"+Showbo.round(loaded/1024,1)+"kb,總共"+Showbo.round(total/1024,1)+"kb,完成"+p+'%';    },    Success:function(picurl,w,h){//bmp不能取到w和h參數,汗。。。      this.loading.style.display='none';      if(w>100){this.w=w;this.h=h;}      this.dvpic.parentNode.style.display=this.tool.style.display='block';      this.dvpic.src=picurl;      this.newA.href=picurl;      var me=this;      setTimeout(function(){me.Org();},100);    },    Failure:function(msg){      //RLNotFound:找不到文件或者服務器關閉----當服務器關閉或找不到文件時      //LoadNeverCompleted:當下載由于服務器超載、服務器崩潰等原因中斷時。      this.dvinfo.innerHTML='<font color="red">'+msg+'</font> <a href="javascript:Showbo.Design.hide();">關閉</a>';    },    //js調用flash中的方法,默認名為forJS    JScallSWF:function(picurl){       if(window["swfId"]&&window["swfId"].forJS)window["swfId"].forJS(picurl,'Showbo.Design.Loading','Showbo.Design.Success','Showbo.Design.Failure');//ie       else if(Showbo.$("swfId").forJS)Showbo.$("swfId").forJS(picurl,'Showbo.Design.Loading','Showbo.Design.Success','Showbo.Design.Failure');	   else if(document["swfId"]&&document["swfId"].forJS)document["swfId"].forJS(picurl,'Showbo.Design.Loading','Showbo.Design.Success','Showbo.Design.Failure');//ff    },    Org:function(){      this.dvpic.style.cssText="";//移除所有樣式,不要使用removeAttribu("style"),在ie6下速度奇慢      this.dvPopDesign.style.height=this.dvPopDesign.style.width='auto';      this.onResize();    },    Drag:function(e){      Showbo.Design.cancelEvent(e);      e=e||event;      if((Showbo.IsIE&&e.button!=1)||(!Showbo.IsIE&&e.button!=0))return false;      if(e.type.indexOf('mousedown')!=-1){        if(Showbo.IsIE)this.setCapture();        Showbo.Design.pos.x=parseInt(Showbo.Design.dvPopDesign.style.left,10);        Showbo.Design.pos.y=parseInt(Showbo.Design.dvPopDesign.style.top,10);        Showbo.Design.pos.ex=e.clientX;        Showbo.Design.pos.ey=e.clientY;        Showbo.Design.pos.drag=true;      }      else if(e.type.indexOf('mousemove')!=-1){        if(Showbo.Design.pos.drag){          Showbo.Design.dvPopDesign.style.left=Showbo.Design.pos.x+e.clientX-Showbo.Design.pos.ex+'px';          Showbo.Design.dvPopDesign.style.top=Showbo.Design.pos.y+e.clientY-Showbo.Design.pos.ey+'px';                  }      }      else if(e.type.indexOf('mouseup')!=-1){       if(Showbo.IsIE)this.releaseCapture();        Showbo.Design.onResize();        Showbo.Design.pos.drag=false;      }    },    mouseWheel:function(e){      Showbo.Design.cancelEvent(e);      e=e||event;      var w=this.offsetWidth,h=this.offsetHeight,refH=Showbo.Design.step*h/w;      if((Showbo.IsIE&&e.wheelDelta<0)||(!Showbo.IsIE&&e.detail>0)){//往下擴大       // if(this.offsetWidth<Showbo.Design.w){           this.style.width=w+Showbo.Design.step+'px';           this.style.height=h+refH+'px';           Showbo.Design.dvPopDesign.style.width=this.offsetWidth+'px';       // }      }else{//縮小         if(w-Showbo.Design.step>=Showbo.Design.min){           this.style.width=w-Showbo.Design.step+'px';           this.style.height=h-refH+'px';           Showbo.Design.dvPopDesign.style.width=this.offsetWidth+'px';         }      }     Showbo.Design.onResize();    },    documentMouseWheel:function(e,IsTimer){       var me=Showbo.Design,ds=me.dvPopDesign;       if(!IsTimer)setTimeout(function(){me.documentMouseWheel(null,true)},100);       else if(ds.offsetHeight<Showbo.BodyScale.y)ds.style.top=document.documentElement.scrollTop+(Showbo.BodyScale.y-ds.offsetHeight)/2+'px';    },    InitDesign:function(){//需要收到調用此方法,要不ie下使用append增加的flash不能調用其方法,奇怪。。。      var html='<p id="designTools"><a href="#" title="在新窗口中打開" target="_blank"></a><a class="just"  href="javascript:Showbo.Design.Org()" title="實際大小"></a>'        +'<a class="close" title="關閉" href="javascript:Showbo.Design.hide()"></a><span>鼠標滾動縮放圖片,按下左鍵拖動</span></p>'        +'<div class="pic"><img  id="designPic"/></div>'+        '<div class="loading" id="designLoading"><div class="pro" id="designPro"></div><div id="designInfo"></div></div>';      document.write('<div class="popdesign" id="dvPopDesign">'+html+'</div>');      this.dvPopDesign=Showbo.$('dvPopDesign');      document.write('<div id="ShowBolightBox"></div>');      this.lightBox=Showbo.$('ShowBolightBox');      this.tool=Showbo.$('designTools');      this.newA=Showbo.$s(this.tool,'a')[0];      this.dvpic=Showbo.$('designPic');      this.dvpic.onmousedown=this.dvpic.onmousemove=this.dvpic.onmouseup=this.Drag;      if(Showbo.IsIE)this.dvpic.onmousewheel=this.mouseWheel;      else this.dvpic.addEventListener('DOMMouseScroll',this.mouseWheel,false);      this.loading=Showbo.$('designLoading');      this.dvpro=Showbo.$('designPro');      this.dvinfo=Showbo.$('designInfo');      document.write('<div class="myloadswf">');      document.write(Showbo.IsIE?'<object id=swfId classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000><param name="src" value="/images/loadSwf.swf"></object>':                    '<embed id="swfId" type="application/x-shockwave-flash" src="/images/loadSwf.swf"/>');      document.write('</div>');    },    checkDOMLast:function(){//此方法非常關鍵,要不無法顯示彈出窗口。兩個對象dvPopDesign和lightBox必須處在body的最后兩個節點內      if(document.body.lastChild!=this.lightBox){        document.body.appendChild(this.dvPopDesign);        document.body.appendChild(this.lightBox);      }    },    hideSelects:function(vis){      var sels=Showbo.$s('select');      for(var i=0;i<sels.length;i++)sels[i].style.visibility=vis;    },    show:function(picurl,e){      this.checkDOMLast();//檢查是否在最后           this.lightBox.style.display=this.dvPopDesign.style.display='block';      this.dvpic.parentNode.style.display=this.tool.style.display='none';      this.dvpic.src='';      this.loading.style.display='block';      this.dvPopDesign.style.height=this.dvPopDesign.style.width='auto';      this.onResize();      this.JScallSWF(picurl);      this.Start();      this.cancelEvent();      var me=this;      //添加事件      if(Showbo.IsIE)document.documentElement.onmousewheel=this.documentMouseWheel;      else document.documentElement.addEventListener('DOMMouseScroll',this.documentMouseWheel,false);      this.hideSelects('hidden');    },    cancelEvent:function(e){      if(e){        e.stopPropagation();        e.preventDefault();              }      else if(window.event){       window.event.returnValue=false;window.event.cancelBubble=true;      }    },    hide:function(){      if(!this.dvPopDesign)return false;      //移除事件      if(Showbo.IsIE)document.documentElement.onmousewheel=null;      else document.documentElement.removeEventListener('DOMMouseScroll',this.documentMouseWheel,false);      this.dvPopDesign.style.display='none';      this.lightBox.style.display='none';      this.hideSelects('visible');    },    onResize:function(){       Showbo.initBodyScale();        var ds=Showbo.Design.dvPopDesign,lbox=Showbo.Design.lightBox,oL,oH,scrollTop=document.documentElement.scrollTop;       oL=ds.offsetWidth;oH=ds.offsetHeight;       if(!Showbo.Design.pos.drag){        ds.style.left=oL>Showbo.BodyScale.otx?0:Math.floor((Showbo.BodyScale.x-ds.offsetWidth)/2)+'px';        ds.style.top=scrollTop+(oH>Showbo.BodyScale.oty?0:Math.floor((Showbo.BodyScale.y-ds.offsetHeight)/2))+'px';       }else{         oL+=(ds.style.left?parseInt(ds.style.left):0);         oH+=(ds.style.top?parseInt(ds.style.top):0);       }       Showbo.Design.lightBox.style.width=(oL<Showbo.BodyScale.otx?Showbo.BodyScale.otx:oL)+'px';       Showbo.Design.lightBox.style.height=(oH<Showbo.BodyScale.oty?Showbo.BodyScale.oty:oH)+'px';       }}
 
 


 

widget.css樣式表

+展開-CSS#ShowBolightBox{display:none;-moz-opacity:0.5;filter:alpha(opacity=50);opacity:0.5;background-color:#000000;z-index:100;position:absolute;left:0px;top:0px;}.popdesign{position:absolute;color:#999999;padding:5px 10px 10px 10px;z-index:999;background:#ffffff;font-size:12px;display:none;}.popdesign p{margin:0px;padding:0px;display:none;}.popdesign p a{float:left;background:transparent url(../images/imgzoom.gif) no-repeat 0px 0px;width:17px;height:17px;margin:5px;}.popdesign p a:hover{background-position:0px -39px;}.popdesign p a.just{background-position:-40px -0px;}.popdesign p a.just:hover{background-position:-40px -39px;}.popdesign p a.close{background-position:-80px -0px;}.popdesign p a.close:hover{background-position:-80px -39px;}.popdesign p span{float:left;margin:8px auto auto 20px;}.popdesign div.pic{clear:both;display:none;}.popdesign div.pic img{cursor:move;}.popdesign div.loading{margin:40px;width:300px;display:block;}.popdesign div.loading .pro{height:10px;width:1%;background:#ff0000;line-height:10px;overflow:hidden;}.myloadswf{position:absolute;left:200px;top:1px;height:1px;width:1px;overflow:hidden;line-height:1px;z-index:-2;}.myloadswf object,.myloadswf embed{width:1px;height:1px;}
 

測試頁面index.html

<!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>   <meta http-equiv="content-type" content="text/html;charset=utf-8" />   <title>編程設計網--設計作品title>   <meta id="metaKey" name="Keywords" content="平面設計,網頁設計,的士廣告,單頁宣傳,戶外廣告" />   <meta id="metaDes" name="Description" content="平面設計,網頁設計,平面設計,網頁設計,的士廣告,單頁宣傳,戶外廣告" />   <link href="css/widget.css" type="text/css" rel="Stylesheet" />   <script type="text/javascript" src="js/design.js"></script> </head><body>    <img title="點擊查看大圖" src="1_s.gif" onclick="Showbo.Design.show('1.gif')" /><br >    <img title="點擊查看大圖" src="2_s.jpg" onclick="Showbo.Design.show('2.jpg')" /><br ><br >   <br ><br ><br > 這張圖片特意傳遞錯誤的地址,測試錯誤回調函數<br >    <img title="點擊查看大圖" src="1_s.gif" onclick="Showbo.Design.show('錯誤的圖片地址.gif',event)" /><br >    <script type="text/javascript">Showbo.Design.InitDesign();//這里需要手動調用初始化函數,要不在ie6下不能調用flash中的方法,郁悶ing....</script> </body></html><script type="text/javascript">Showbo.initBodyScale(true);</script>
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人精品日本亚洲| 亚洲午夜久久久影院| 国产日韩在线一区| 亚洲国产欧美一区二区三区同亚洲| 国产精品揄拍一区二区| 国产精品一区二区三区久久久| 久久电影一区二区| 色多多国产成人永久免费网站| 亚洲欧美国内爽妇网| 国产精品久久久久久中文字| 亚洲福利视频在线| 亚洲天堂av在线免费观看| 国产精品日韩精品| 亚洲欧洲激情在线| 精品精品国产国产自在线| 国产精品久久中文| 亚洲综合日韩在线| 亚洲人成网7777777国产| 91免费国产网站| 欧美激情女人20p| 亚洲一区二区三区视频| 欧美日韩国产中字| 亚洲欧美制服另类日韩| 亚洲欧美在线x视频| 日本高清视频一区| 日韩av在线直播| 国产精品久久久久久久久久尿| 精品久久久久久久久久久久久| 成人美女av在线直播| 丝袜亚洲欧美日韩综合| 亚州精品天堂中文字幕| 日韩一区二区三区xxxx| 狠狠躁夜夜躁人人躁婷婷91| 一区二区国产精品视频| 亚洲大胆人体视频| 成人444kkkk在线观看| 国产经典一区二区| 亚洲自拍欧美另类| 中文字幕日韩综合av| 精品国产一区二区三区久久久| 国产精品久久久久av免费| 久久久人成影片一区二区三区观看| 国产精品爽爽爽| 日韩精品中文字幕在线播放| 欧美亚洲国产成人精品| 国产福利成人在线| 亚洲国产古装精品网站| 欧美日韩国产中文字幕| 亚洲黄色片网站| 日韩美女主播视频| 91久久久久久| 亚洲香蕉成视频在线观看| 欧美乱大交做爰xxxⅹ性3| 亚洲一区精品电影| 欧美肥臀大乳一区二区免费视频| 成人信息集中地欧美| 91九色视频导航| 国产精品专区h在线观看| 国产精品美女午夜av| 日韩精品中文字幕在线观看| 美女啪啪无遮挡免费久久网站| 国产精品成久久久久三级| 在线观看国产精品日韩av| 国产97在线播放| 久久精品国产一区| 狠狠久久亚洲欧美专区| 日本久久久久久久久| 欧美高跟鞋交xxxxxhd| 精品国产一区二区三区久久久| 欧美性猛交xxxx乱大交蜜桃| 欧美xxxx14xxxxx性爽| 日韩av在线免播放器| 欧美剧在线观看| 国产成人短视频| 国产精品日韩在线| 亚洲毛片在线免费观看| 亚洲va久久久噜噜噜久久天堂| 国产精品欧美日韩一区二区| 欧美黑人国产人伦爽爽爽| 久久久久久亚洲精品| 亚洲自拍中文字幕| 亚洲第一免费网站| 亚洲白拍色综合图区| 亚洲色图狂野欧美| 国产z一区二区三区| 2019中文字幕全在线观看| 精品国产视频在线| 精品久久久久久电影| 97香蕉超级碰碰久久免费的优势| 热久久美女精品天天吊色| 成人国产精品久久久| 欧美日韩国产精品一区二区不卡中文| 亚洲欧美综合另类中字| 成人精品久久久| 成人xvideos免费视频| 亚洲精品国产福利| 日韩久久午夜影院| 久久久久久91香蕉国产| 午夜免费久久久久| 亚洲精品动漫100p| 国产精品最新在线观看| 亚洲视频一区二区| 欧美日韩色婷婷| 国产精品久久久久77777| 亚洲欧洲国产精品| 亚洲精品电影网站| 国产男人精品视频| 欧美电影免费观看高清完整| 高清一区二区三区日本久| 国产精品久久久久久网站| 成人深夜直播免费观看| 久久久国产精品亚洲一区| 91精品视频在线播放| 国产美女扒开尿口久久久| 亚洲第一区第一页| 日韩电影在线观看永久视频免费网站| 欧美第一黄网免费网站| 色妞色视频一区二区三区四区| 国产精品成av人在线视午夜片| 久久成人人人人精品欧| 这里只有精品视频| 久久精品国产久精国产思思| 欧美第一淫aaasss性| 91九色视频导航| 久久噜噜噜精品国产亚洲综合| 日韩av电影免费观看高清| 国产精品日韩在线| 欧美成人合集magnet| 在线观看精品自拍私拍| 日韩免费视频在线观看| 欧美激情久久久久| 日韩精品视频免费专区在线播放| 91亚洲永久免费精品| 91在线中文字幕| 91热福利电影| 国产一区二区三区日韩欧美| 97精品在线观看| 国产免费一区二区三区香蕉精| 欧美另类69精品久久久久9999| 国产69精品久久久久99| 欧美一级电影在线| 久久久免费在线观看| 这里只有精品在线播放| 国产亚洲精品美女| 亚洲成人性视频| 久久久久久久久久国产精品| 国产精品电影久久久久电影网| 久久精品在线播放| 亚洲精品国精品久久99热| 欧美日韩中国免费专区在线看| 国产精品欧美一区二区三区奶水| 成人一区二区电影| 久久久亚洲国产天美传媒修理工| 欧美性xxxx极品hd欧美风情| 国产在线视频91| 91av视频在线观看| 日韩视频中文字幕| 欧美精品www在线观看| 国外色69视频在线观看| 欧美激情欧美激情在线五月| 成人亚洲激情网| 国内精品伊人久久| 91精品国产91久久久久久最新| 国产91精品久久久久久久|