0

このアニメーションを以下に実装したい:

ここに画像の説明を入力

そして、私はそのように動作するようにjsフィドルを作成していますが、(x、y)の位置を設定したいときにスタックがあります..

var interval;
function moveit(left,top) {
    $("#obj").css("left",left+'px');
    $("#obj").css("top",top+'px');
}
$("#change").click(function(){
    var left = $("#left").val(); //posisi x
    var top = $("#top").val();  //posisi y
    var velocity= 1;

    interval = setInterval(function() {
        left = parseFloat(left) + parseFloat(velocity);
        top = parseFloat(top) + parseFloat(velocity);
        console.log('position x = ' + left);
        console.log('position y = ' + top);

        if(top >= 400 ) {
        clearInterval(interval);
        }

        moveit(left,top);
    },10);
});

$("#clear").click(function(){
clearInterval(interval);
});
​

これは私のjsフィドルですhttp://jsfiddle.net/viyancs/MxuRP/1/

私の質問

  1. コードを生成してその曲線のx、y座標を取得する方法は?
  2. 多分あなたはこれをより良くするための別のアイデアを持っていますか?

ありがとうございます

4

1 に答える 1

3

速度の y 成分を経時的に変更します。

http://jsfiddle.net/MxuRP/2/

var interval;
function moveit(left,top) {
    $("#obj").css("left",left+'px');
    $("#obj").css("top",top+'px');
}
$("#change").click(function(){
    var left = $("#left").val(); //posisi x
    var top = $("#top").val();  //posisi y
    var velocityX = 1;
    var velocityY = 0;
    var accelerationY = 0.1;

    interval = setInterval(function() {
        left = parseFloat(left) + parseFloat(velocityX);
        velocityY += accelerationY;
        top = parseFloat(top) + parseFloat(velocityY);
        console.log('position x = ' + left);
        console.log('position y = ' + top);

        if(top >= 400 ) {
        clearInterval(interval);
        }

        moveit(left,top);
    },10);
});

$("#clear").click(function(){
clearInterval(interval);
});
于 2012-10-19T04:56:00.963 に答える