0

次のコードで 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();
}
4

3 に答える 3

3

このコードはMath.sin( time ) * 96 + 128、x座標およびMath.cos( time * 0.9 ) * 96 + 128y座標として使用します。timeミリ秒数の場合(そのままnew Date().getTime())、x座標とy座標は両方とも、連続する呼び出しごとに激しく変動し、ドットは「移動」するのではなく、「任意にジャンプ」するように見えます—60倍第二に、目がそれを追跡できるよりも速く。ミリ秒数に0.002を掛けると、ドットのx座標とy座標が、(人間の目には)動きのように見えるように、はるかにスムーズに振動します。

于 2011-11-30T04:40:27.780 に答える
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 メソッドによって返される値は、1970 年 1 月 1 日からのミリ秒数です。この値は、円の次の x 座標と y 座標を計算するために使用されます。

于 2011-11-30T04:36:45.883 に答える
0

この値は、現在の時間の一部として円が描画される場所を制御します。数値が小さいほど、アニメーションの表示が遅くなります(そして鮮明になります)。数値が大きい場合は、その逆になります。

jsFiddleウィジェットの右上隅にあるプラスアイコンをクリックすると、数字で遊ぶことができます。これにより、javascriptを編集して実行できるjsFiddleサイトに移動します。

注-問題のスクリプトはIE9と互換性がないようです-FFでは問題なく動作しますが、他のブラウザーはテストしていません...

于 2011-11-30T04:59:49.230 に答える