0

我想在下面实现这个动画:

在此处输入图像描述

我正在创建 js fiddle 来像这样工作,但是当我想设置 (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 回答