2

蝶の絵をページ上でランダムに動かし、本物の蝶をシミュレートしました。

$(document).ready(function(){
    animateIMG();
});

function makeNewPosition(){
    // Get viewport dimensions (remove the dimension of the div)
    var h = $(window).height() - 50;
    var w = $(window).width() - 50;
    var nh = Math.floor(Math.random() * h);
    var nw = Math.floor(Math.random() * w);
    return [nh,nw];
}

function animateIMG(){
    var newq = makeNewPosition();
    var oldq = $('img').offset();
    var speed = calcSpeed([oldq.top, oldq.left], newq);
    $('img').animate({ top: newq[0], left: newq[1] }, speed, function(){
      animateIMG();        
    });
};

function calcSpeed(prev, next) {
    var x = Math.abs(prev[1] - next[1]);
    var y = Math.abs(prev[0] - next[0]);
    var greatest = x > y ? x : y;
    var speedModifier = 0.1;// control the speed here 
    var speed = Math.ceil(greatest/speedModifier);
    return speed;
}

しかし、方向(回転角度)を移動先に変更する方法がわかりません。古いポイントと新しいポイントの間の角度を計算する必要があるかもしれません。次に、このプラグインを使用し て角度を回転させますか?

コードの変更を手伝ってくれる人はいますか?

ありがとう! ここに画像の説明を入力

4

1 に答える 1

2

新しい角度を度単位で計算するには、次の関数を使用できます。

function getNewAngle(prev, next){
   var x = prev[1] - next[1];
   var y = prev[0] - next[0];
   var ang = Math.atan(Math.abs(y)/Math.abs(x))/(Math.PI/180)
   if(x>0&&y>0)
   return ang;
   else if(x<0&&y>0)
   return ang+90;
   else if(x>0&&y<0)
   return ang-90;
   else
   return ang+180
}

その後、使用できます

-webkit-transform: rotate(angle);
-moz-transform: rotate(angle);

FF および Chrome または JS の場合、すべてのブラウザの場合

于 2012-11-14T09:30:22.383 に答える