⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exobud.js

📁 用VB+JAVASCRIPT开发的一个仿QQ爱墙软件
💻 JS
📖 第 1 页 / 共 2 页
字号:
<!--
//
// ===========================================================【程式資訊及版權宣告】====
//  ExoBUD MP(II) v4.1tc+ [Traditional Chinese Version]
//  Copyright(Pe) 1999-2003 Jinwoong Yu[ExoBUD], Kendrick Wong[kiddiken.net].
// =====================================================================================
//  程式原作者: 庾珍雄(Jinwoong Yu)         繁體中文化作者: 驚直(Kendrick Wong/kiddiken)
//    個人網站: http://exobud.nayana.org          個人網站: http://kiddiken.net
//    電子郵件: exobud@hanmail.net                電子郵件: webmaster@kiddiken.net
//    ICQ 帳號: 96138429                          MSN 帳號: kiddiken@msn.com
//    發表日期: 2003.01.10(此版本原韓文版)        發表日期: 2003.03.23(繁體中文首個版本)
// =====================================================================================
//
//    版權所有。
//    請尊重智慧財產權: 無論您對本程式 ExoBUD MP(II) 作任何修改、製作(或翻譯)面板,請您
//    *必須*保留此段版權宣告的內容,包括程式(及面板)原作者及中文化作者的名字和網站連結。
//
//    如果您想要以這個繁體中文版的程式為基礎,翻譯成其他語言的版本,及/或在網際網路上,
//    公開發表您所修改過的版本,請您首先以傳送電子郵件的方式,徵求我們的同意。
//
//    請不要將程式(或面板)原作者或中文化作者的名字改成您自己的名字,
//    然後以另一程式名稱重新命名後在網路上公開發表及散播本程式,因為這是嚴重的侵權行為。
//
//    這是公益免費程式,所以請不要使用在商業用途上。
//    另外,您亦不可將本程式(全部或部份)複製到其他儲存媒體(例如光碟片)上作販賣獲利用途。
//
//    假如因為使用本程式而令您蒙受資料遺失或損毀,程式原作者及中文化作者均不用對其負責。
//
// =====================================================================================

// 當您修改本程式的原始碼時,請注意執行修改後的程式,可能會導致一些正在執行中的應用程式
// 無法正常運作;另外亦要留意在JavaScript上所使用的變數名稱和設定值,大小寫是有分別的。

var objMmInfo = null;
var intMmCnt = 0;
var intSelMmCnt = 0;
var intActMmCnt = 0;
var cActIdx = 0;
var cActTit = "nAnT";
var strMmInfo = "ExoBUD 媒體檔案資訊";

var blnfpl = false;
var blnEnabled = false;
var blnEOT = false;
var arrSelMm = null;
var arrActMm = null;
var intExobudStat = 0;
var tidTLab = null;
var tidErr = null;
var tidMsg = null;
var intErrCnt = 0;
var blnRept = false;

// 這是「自動連續播放」的設定。一般來說,播放一首音樂完畢後就會自動跳到下一首。
// 但是如果您要播放的媒體是視訊檔案(例如:MV)的話,最好將這個設定值改為 false 。
//    true = 自動連續播放
//   false = 不要自動連續播放,讓使用者自行挑選下一首曲目
var blnAutoProc = true;

// 設定播放面板上所顯示的時間長度,預設是以正常方式(Elapse)抑或倒數方式(Lapse)顯示:
//    true = 以正常方式顯示時間長度,即動態地顯示曲目已播放的時間
//   false = 以倒數方式顯示時間長度,即動態地顯示曲目剩餘的時間
var blnElaps = true;

// 設定播放每首曲目之間的延遲時間(Delay Time),單位是毫秒(msec)。
// 每100毫秒代表0.1秒,預設值是500毫秒(即0.5秒),最少也要設為100毫秒。
var intDelay = 500;

// wmpInit() 函式: 使用 wmp-obj v7.x 程式庫建立環境設定
function wmpInit(){
 var wmps = Exobud.settings;
 var wmpc = Exobud.ClosedCaption;

 wmps.autoStart = true;
 wmps.balance = 0;
 wmps.enableErrorDialogs = false;
 wmps.invokeURLs = false;
 wmps.mute = false;
 wmps.playCount = 1;
 wmps.rate = 1;
 wmps.volume = 100;
 if(blnUseSmi){wmpc.captioningID="capText"; capText.style.display="";}
 Exobud.enabled = true;
}

// mkMmPath() 函式: 準備建立 Multi-object 的陣列
function mkMmPath(u,t,f,s){
 this.mmUrl = u;
 this.mmTit = t;
 this.mmDur = 0;
 this.selMm = f;
 this.actMm = f;
 if(blnUseSmi){this.mmSmi=s;}
}

// mkList() 函式: 建立 Multi-object 的陣列
function mkList(u,t,s,f){
 var cu = u;
 var ct = t;
 var cs = s;
 var cf = f;
 var idx = 0;

 if(objMmInfo == null){objMmInfo=new Array(); idx=0;}
 else {idx=objMmInfo.length;}
 if(u=="" || u==null){cu="mms://";}
 if(t=="" || t==null){ct="nAnT";}
 if(f=="f" || f=="F"){cf="f";}
 else {cf="t"; intSelMmCnt++;}

 if(blnUseSmi){
   objMmInfo[idx]=new mkMmPath(cu,ct,cf,cs);
 } else {
   objMmInfo[idx]=new mkMmPath(cu,ct,cf);
 }

 intActMmCnt = intSelMmCnt;
 intMmCnt = objMmInfo.length;
}

// mkSel() 函式: 建立已選取播放項目(Selected Media)的陣列
function mkSel(){
 arrSelMm = null;
 intSelMmCnt = 0;
 var selidx = 0;

 if(intMmCnt<=0){intExobudStat=1; blnEnabled=false; return;} // 沒有任何播放清單項目

 arrSelMm = new Array();
 for(var i=0; i<intMmCnt; i++){
   if(objMmInfo[i].selMm =="t"){arrSelMm[selidx]=i;selidx++;}
 }
 intSelMmCnt=arrSelMm.length;

 if(intSelMmCnt<=0){blnEnabled=false; intExobudStat=2; arrSelMm=null; return;}
 else {blnEnabled=true; mkAct();}
}

// mkAct() 函式: 建立已啟用播放項目(Activated Media)的陣列
function mkAct(){
 arrActMm = null;
 intActMmCnt = 0;
 var selidx = 0;
 var actidx = 0;

 if(blnEnabled){
   arrActMm=new Array();
   for(var i=0; i<intSelMmCnt; i++){
     selidx=arrSelMm[i];
     if(objMmInfo[selidx].actMm=="t"){arrActMm[actidx]=selidx; actidx++;}
   }
   intActMmCnt=arrActMm.length;
 }
 else { return;}
 if(intActMmCnt<=0){blnEOT=true;arrActMm=null;}
 else {blnEOT=false;}
}

// chkAllSel() 函式: 全部選取所有的播放清單項目
function chkAllSel(){
 for(var i=0; i<intMmCnt; i++){
   objMmInfo[i].selMm="t";
   objMmInfo[i].actMm="t";
 }
 mkSel();
}

// chkAllDesel() 函式: 不選取所有的播放清單項目
function chkAllDesel(){
 for(var i=0; i<intMmCnt; i++){
   objMmInfo[i].selMm="f";
   objMmInfo[i].actMm="f";
 }
 mkSel();
}

// chkItemSel() 函式: 選取或不選取播放清單項目
function chkItemSel(idx){
 if(objMmInfo[idx].selMm =="t"){
   objMmInfo[idx].selMm="f";objMmInfo[idx].actMm="f";
 } else {
   objMmInfo[idx].selMm="t";objMmInfo[idx].actMm="t";
 }
 mkSel();
}

// chkItemAct() 函式: 將某個已啟用播放項目(Activated Media)凍結
function chkItemAct(idx){
 objMmInfo[idx].actMm="f";
 mkAct();
}

// mkSelAct() 函式: 將已選取播放項目(Selected Media)加入到已啟用播放項目(Activated Media)
function mkSelAct(){
 var idx=0;
 for(var i=0; i<intSelMmCnt; i++){
   idx=arrSelMm[i];
   objMmInfo[idx].actMm="t";
 }
 mkAct();
}

// initExobud() 函式: 初始化 ExoBUD MP(II) 媒體播放程式
function initExobud(){
 wmpInit();
 mkSel();
 blnfpl = false;

 if(!blnShowVolCtrl) {
   document.images['vmute'].style.display = "none";
   document.images['vdn'].style.display = "none";
   document.images['vup'].style.display = "none";
 }
 if(!blnShowPlist){ document.images['plist'].style.display = "none";}

 if(blnRept){imgChange('rept',1);}
 else {imgChange('rept',0);}

 if(blnRndPlay){imgChange('pmode',1);}
 else {imgChange('pmode',0);}
 showTLab();
 disp1.innerHTML = "www.hx33.net MusicPlayer";
 if(blnStatusBar){ window.status=('www.hx33.net MusicPlayer');}
 if(blnAutoStart){startExobud();}
}

// startExobud() 函式: 開始播放曲目
function startExobud(){
 var wmps = Exobud.playState;
 if(wmps==2){Exobud.controls.play(); return;}
 if(wmps==3){ return;}

 blnfpl=false;
 if(!blnEnabled){waitMsg();return;}
 if(blnEOT){mkSelAct();}
 if(intErrCnt>0){intErrCnt=0;tidErr=setTimeout('retryPlay(),1000');return;}
 if(blnRndPlay){rndPlay();}
 else {cActIdx=arrActMm[0]; selMmPlay(cActIdx);}
}

// selMmPlay() 函式: 處理媒體標題
function selMmPlay(idx){
 clearTimeout(tidErr);
 cActIdx=idx;
 var trknum=idx+1;
 var ctit =objMmInfo[idx].mmTit;
 if(ctit=="nAnT"){ctit="(沒有媒體標題)"}
 if(blnUseSmi){Exobud.ClosedCaption.SAMIFileName = objMmInfo[idx].mmSmi;}
 Exobud.URL = objMmInfo[idx].mmUrl;
 cActTit = "T" + trknum + ". " + ctit;
 disp1.innerHTML = cActTit;
 if(blnStatusBar){ window.status=(cActTit);}
 chkItemAct(cActIdx);
}

// wmpPlay() 函式: 使用 wmp-obj v7.x 程式庫播放曲目
function wmpPlay(){Exobud.controls.play();}

// wmpStop() 函式: 停止播放曲目及顯示「就緒」狀態訊息
function wmpStop(){
 intErrCnt=0;
 clearTimeout(tidErr);
 clearInterval(tidTLab);
 imgChange("stopt",1);
 imgChange("pauzt",0);
 imgChange("scope",0);
 showTLab();
 mkSelAct();
 Exobud.controls.stop();
 Exobud.close();
 disp1.innerHTML = "HX33--华夏动漫网 欢迎您! http://www.hx33.net";
 if(blnStatusBar){ window.status=('HX33--华夏动漫网 欢迎您! http://www.hx33.net');return true;} 
}

// wmpPause() 函式: 使用 wmp-obj v7.x 程式庫暫停播放曲目
function wmpPause(){Exobud.controls.pause();}

// wmpPP() 函式: 在暫停播放和繼續播放之間進行切換
function wmpPP(){
 var wmps = Exobud.playState;
 var wmpc = Exobud.controls;
 clearInterval(tidTLab);
 clearTimeout(tidMsg);
 if(wmps==2){wmpc.play();}
 if(wmps==3){wmpc.pause(); disp2.innerHTML="暫停"; tidMsg=setTimeout('rtnTLab()',1500);}
 return;
}

// rndPlay() 函式: 隨機播放(Random Play)的運算方式
function rndPlay(){
 if(!blnEnabled){waitMsg();return;}
 intErrCnt=0;
 var idx=Math.floor(Math.random() * intActMmCnt);
 cActIdx=arrActMm[idx];
 selMmPlay(cActIdx);
}

// playAuto() 函式: 對已啟用播放項目進行「自動連續播放」的處理
// 這是根據上面 blnAutoProc 的設定值而決定的動作。
function playAuto(){
 if(blnRept){selMmPlay(cActIdx);return;}
 if(!blnAutoProc){wmpStop();return;}
 if(blnfpl){wmpStop();return;}
 if(!blnEnabled){wmpStop();return;}
 if(blnEOT){
   if(blnLoopTrk){startExobud();}
   else {wmpStop();}
 } else {
   if(blnRndPlay){rndPlay();}
   else {cActIdx=arrActMm[0]; selMmPlay(cActIdx);}
 }
}

// 播放使用者在播放清單上所點選的單一曲目
function selPlPlay(idx){
 blnfpl=true;
 selMmPlay(idx);
}

// playPrev() 函式: 播放上一首已啟用播放項目
function playPrev(){
 var wmps = Exobud.playState;
 if(wmps==2 || wmps==3){Exobud.controls.stop();}
 blnfpl=false;
 if(!blnEnabled){waitMsg();return;}
 if(blnEOT){mkSelAct();}

 intErrCnt=0;
 if(blnRndPlay){rndPlay();}
 else {
   var idx=cActIdx;
   var blnFind=false;
   for(var i=0;i<intSelMmCnt;i++){ if(cActIdx==arrSelMm[i]){idx=i-1; blnFind=true;}}
   if(!blnFind){startExobud();return;}
   if(idx<0){idx=intSelMmCnt-1;cActIdx=arrSelMm[idx];}
   else {cActIdx=arrSelMm[idx];}
   selMmPlay(cActIdx);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -