2011-11-30 65 views
1

在下面的代碼中,乘以0.002是否有任何特殊用途?爲什麼在這行代碼中乘以0.002:new Date()。getTime()* 0.002;

var time = new Date().getTime() * 0.002; 

此代碼摘錄是從here拍攝。我提供以下的整個代碼也:

window.requestAnimFrame = (function(){ 
    return window.requestAnimationFrame  || 
      window.webkitRequestAnimationFrame || 
      window.mozRequestAnimationFrame || 
      window.oRequestAnimationFrame  || 
      window.msRequestAnimationFrame  || 
      function(/* function */ callback, /* DOMElement */ element){ 
      window.setTimeout(callback, 1000/60); 
      }; 
})(); 
var canvas, context; 

init(); 
animate(); 

function init() { 

canvas = document.createElement('canvas'); 
canvas.width = 256; 
canvas.height = 256; 

context = canvas.getContext('2d'); 

document.body.appendChild(canvas); 

} 

function animate() { 
    requestAnimFrame(animate); 
    draw(); 
} 

function draw() { 
    var time = new Date().getTime() * 0.002; 
    var x = Math.sin(time) * 96 + 128; 
    var y = Math.cos(time * 0.9) * 96 + 128; 

    context.fillStyle = 'rgb(245,245,245)'; 
    context.fillRect(0, 0, 255, 255); 

    context.fillStyle = 'rgb(255,0,0)'; 
    context.beginPath(); 
    context.arc(x, y, 10, 0, Math.PI * 2, true); 
    context.closePath(); 
    context.fill(); 
} 
+1

我也跟着你的鏈接,並看不出代碼隨處可見但我會繼續說,是的,有一個特殊的目的(只是0.002乘以不是偶然發生的事情)。 – nnnnnn

+0

轉到頁面上的JSFiddle窗口,然後單擊JavaScript。 –

+1

我想它會得到自1970年1月1日以來的半秒數。不能在你的鏈接中找到代碼。 –

回答

1
var time = new Date().getTime() * 0.002; 
var x = Math.sin(time) * 96 + 128; 
var y = Math.cos(time * 0.9) * 96 + 128; 

由getTime方法返回的值是自1毫秒數1970年1月該值被用於計算下一個x和y座標爲圓。

3

該代碼使用Math.sin(time) * 96 + 128作爲x座標,Math.cos(time * 0.9) * 96 + 128作爲y座標。如果time是毫秒數(如new Date().getTime()是),那麼x座標和y座標將隨着每次連續調用而大幅搖擺,並且點似乎不會「移動」,而是「隨意跳躍」60秒每秒一次,比眼睛能夠追蹤更快。將毫秒數乘以0.002導致點的x座標和y座標以更平滑的方式振盪,其方式看起來像(像人眼一樣)運動。

+0

對,除了像這樣分開500,'new Date()。getTime()/ 500;'可以產生類似的結果。我可以假設0.002是任意的嗎? –

+0

@Jesse,re:除以500:你說得對:在JavaScript中,'/ 500'等同於'* 0.002'。我對他可能選擇編寫'* 0.002'有一些想法,但我無法給你一個肯定的答案 - 而且它無論如何也沒有什麼不同。回覆:任意的:我猜測他嘗試了幾個不同的值,直到他獲得了對他來說很好的速度。 「0.002」絕對不是什麼神奇的東西,而不是「0.001」或「0.004」。 – ruakh

+0

@ruakh - '在JavaScript中,/ 500相當於* 0.002' - 不僅僅在JavaScript中,在數學上一般。 :-)簡而言之,它是控制動畫速度的比例因子。 – RobG

0

該值控制圓圈繪製的位置,作爲當前時間的一小部分。數字越小,動畫出現的越慢(並且更清晰) - 對於更大的數字,反過來也是如此。

您可以通過單擊jsFiddle小部件右上角的加號圖標來玩數字 - 這會將您帶到jsFiddle站點,您可以在其中編輯和運行javascript。

注意 - 它看起來像有問題的腳本不與​​IE 9兼容 - 在FF對我來說工作正常,但沒有測試任何其他瀏覽器...

相關問題