2013-03-22 93 views
2

我有一个歌曲长度倒计时的JavaScript下面。我在一个php页面中使用它。歌曲长度倒计时,需要跟踪剩余长度

我的问题是,当我刷新页面,或者当我在歌曲播放时进入页面时,我将无法获得剩余的长度。我会得到完整的歌曲lentgh倒计时。

例如,2分钟的歌曲。如果它在上午9:38开始,并且我在上午9:39进入该页面,那么我需要1分钟倒计时,而不是2分钟。

所以我想真正的问题是:如何在服务器端跟踪剩余歌曲长度?

var startTime, countAmt, interval; 
function now() { 
    return ((new Date()).getTime()); 
} 
function tick() { 
    var elapsed = now() - startTime; 
    var cnt = countAmt - elapsed; 
    var elem = document.getElementById("countdown"); 
    if (cnt > 0) { 
    elem.innerHTML = minute(Math.round(cnt/1000)); 
    } else { 
    elem.innerHTML = "0:00"; 
    clearInterval(interval); 
    } 
} 
function startTimer(secs) { 
    document.getElementById("countdown").innerHTML = minute(secs); 
    countAmt = secs * 1000; 
    startTime = now(); 
    interval = setInterval(tick, 1000); 
} 
function minute(secs){ 
    minVar = Math.floor(secs/60); // The minutes 
    secs = secs % 60;    // The balance of seconds 
    if (secs < 10) { 
     secs = "0"+secs; 
    } 
    return minVar+":"+secs; 
} 
startTimer(<?php echo $stream['info']['length'];?>); 
document.getElementById("countdown").innerHTML = minute(<?php echo $stream['info']['length'];?>); 
+1

创建一个服务器端的网页,其中获得的POST,GET数据并存储该值或者会话或数据库, 使用定时器做一个Ajax调用该服务器页每一秒。 页面刷新时,无论您在哪里存储数据,都会为会话或数据库提取数据。 – 2013-03-22 15:56:38

+0

感谢prabeen吉里,但不幸的是我不知道我该怎么做。如果歌曲长度是2分钟,则页面刷新时ajax将始终返回2分钟。你有什么建议? – trogne 2013-03-22 19:22:38

回答

0

随着Winamp的高级职称格式歌曲时以这种形式开始,我可以送时间:h:m:s

我得到了总秒数:

sscanf($song_begins, "%d:%d:%d", $hours, $minutes, $seconds); 
$song_begins_sec = $hours * 3600 + $minutes * 60 + $seconds; 

获取当前时间:

$now = date('H:i:s', time()); 

在几秒钟内:

sscanf($now, "%d:%d:%d", $hours, $minutes, $seconds); 
$now_sec = $hours * 3600 + $minutes * 60 + $seconds; 

然后我calcute当歌曲结束:

$songend = $song_begins_sec+$stream['info']['length']; 

所以正确的$倒计时:

$countdown = $songend-$now_sec;