返回列表 發帖

關於 同步 的問題

本帖最後由 PvP_Sun 於 2011-9-6 18:37 編輯

煩請各位大大幫忙一下,
最近小弟想寫一隻能跟 Jplayer 同步播放歌詞的 javascript .

而使用的方法 大概就是 利用Jplayer播放的秒數  與 Lrc (歌詞) 的秒數
將兩者同步之後 再把詞顯示出來

而目前碰到的問題點 在於

JPlayer 跟 lrc 同步的問題


-----------------------------------------------------------

function sToArray(str)// 解析如“[02:02][00:24]没想到是你”的字符串前放入數組
{
var left=0;//"["的个数
var leftAr=new Array();
for(var k = 0 ; k <str.length;k++)
{
if(str.charAt(k)=="[")
{
leftAr[left]=k;
left++;
}
}
if(left!=0)
{
for(var i=0;i<leftAr.length;i++)
{
lytext[tflag]=str.substring(str.lastIndexOf("]")+1);//放歌詞
lytime[tflag]=conSeconds(str.substring(leftAr+1,leftAr+6));//放時間
tflag++;
}
}
//alert(str.substring(leftAr[0]+1,leftAr[0]+6));
}

unction sortAr()//按時間從新排列時間 和 歌詞的數組
{
var temp=null;
var temp1=null;
for(var k=0; k<lytime.length;k++)
{
for(var j=0;j<lytime.length-k;j++)
{
if(lytime[j]>lytime[j+1])
{
temp=lytime[j];
temp1=lytext[j];
lytime[j]=lytime[j+1];
lytext[j]=lytext[j+1];
lytime[j+1]=temp;
lytext[j+1]=temp1;
}
}
}
}


function conSeconds(t)  //把01:25的时间轉化成秒;
{
var m=t.substring(0,t.indexOf(":"));
var s=t.substring(t.indexOf(":")+1);
s=parseInt(s.replace(/\b(0+)/gi,""));
if(isNaN(s))
s=0;
var totalt=parseInt(m)*60+s;
//alert(parseInt(s.replace(/\b(0+)/gi,"")));
if(isNaN(totalt))
return 0;
return totalt;
}

function getSeconds() // 得到當前播放器播放的時間
{
var t=getPosition();
t=t.toString(); //數字轉為字串
var s=t.substring(0,t.lastIndexOf(".")); //得到當前的秒數
//alert(s);
return s;
}

function getPosition()  //返回當前的時間位置
{
var mm=document.getElementById("jPlayerFlashEvent");   //  <<<  引進播放器

//var mmt= mm ;
//alert(mmt);
return mm.currentTime;  // 回傳播放器的秒數
}

function mPlay() //播放
{
var ms=parseInt(getSeconds());
if(isNaN(ms))
show(0);
else
show(ms);
window.setTimeout("mPlay()",100)
}


-----------------------------------------------------------

你可以用 jPlayer 的 event(可能是 $.jPlayer.event.playing)接收正在播放的位置(也就是時間,應該是 event.jPlayer.status.currentTime),然後找出正確的歌詞並顯示。
To infinity and beyond!

TOP

返回列表 回復 發帖