2015-07-13 187 views
0

我在使用JavaScript將時間碼更改爲幀時出現問題。 運行在30fps我們得到將時間碼轉換爲秒

"00:00:01:00" = 30 frames 

到目前爲止好,只是我檢查的秒數,在它被轉換成這樣:

enter image description here

首先不知道這是怎麼回事呢? ! 有人指出我有\ n而不是\ nf。

其次 返回的幀不正確。 1分鐘應該是1800秒不是1800000

如果你能告訴我,如果這是一個安赫獎勵積分。

// set the frame rate or Frame Rat as we like to call him 
var frameRat = 30 // fps 
var numOfFrames = 60 // animation frame count 
var animTime = "00:01:00:00" // time code 

var a = convertTimeToFrames(animTime, frameRat); 
var result = animTime + " at " + frameRat + " fps\n = " + a + " frames."; 
alert(result); 



function convertTimeCodeToSeconds(timeString, framerate) 
{ 

    var timeArray = timeString.split(":"); 
    var hours = timeArray[0] * 60 * 60; 
    var minutes = timeArray[1] * 60; 
    var seconds = timeArray[2]; 
    var frames = timeArray[3]*(1/framerate); 
    var str = "h:" + hours + "\nm:" + minutes + "\ns:" + seconds + "\f:" + frames; 
    alert(str) 
    var totalTime = hours + minutes + seconds + frames; 

    //alert(timeString + " = " + totalTime) 
    return totalTime; 
} 

function convertTimeToFrames(timeString, framerate) 
{ 
    var secs = convertTimeCodeToSeconds(timeString, framerate); 
    return secs * framerate; 
} 
+0

您的字符串中有'\ f:'而不是'\ nf:'。你是這個意思嗎? – DocMax

+0

需求究竟是什麼? – Ayush

回答

1

你正在做數字和字符之間的操作。在分割後將所有值轉換爲數字,如下所示:

// set the frame rate or Frame Rat as we like to call him 
var frameRat = 30 // fps 
var numOfFrames = 60 // animation frame count 
var animTime = "00:01:00:00" // time code 

var a = convertTimeToFrames(animTime, frameRat); 
var result = animTime + " at " + frameRat + " fps\n = " + a + " frames."; 
alert(result); 



function convertTimeCodeToSeconds(timeString, framerate) 
{ 

    var timeArray = timeString.split(":"); 
    var hours = parseInt(timeArray[0]) * 60 * 60; 
    var minutes = parseInt(timeArray[1]) * 60; 
    var seconds = parseInt(timeArray[2]); 
    var frames = parseInt(timeArray[3])*(1/framerate); 
    var str = "h:" + hours + "\nm:" + minutes + "\ns:" + seconds + "\nf:" + frames; 
    alert(str) 
    var totalTime = hours + minutes + seconds + frames; 

    //alert(timeString + " = " + totalTime) 
    return totalTime; 
} 

function convertTimeToFrames(timeString, framerate) 
{ 
    var secs = convertTimeCodeToSeconds(timeString, framerate); 
    return secs * framerate; 
} 
+0

我認爲可能是這種情況。 'alert(typeof frames)'帶着號碼 –

+0

返回''parseInt(n)'這裏應該替換爲'parseInt(n,10)'來避免無意的解釋爲八進制。 – DocMax