查找水平移动元素的每个X,Y位置

时间:2013-09-05 13:49:04

标签: javascript arrays object position

我在这方面遇到了很多麻烦。这是我到目前为止所做的:

var findPos = function(obj){
    var curLeft = 0;
    var curTop = 0;
    var arr = [];

    curLeft += obj.offsetLeft;
    curTop += obj.offsetTop;
    arr[arr.length] = {x: curLeft, y: curTop}; 
    return arr;
}

这只返回传递给函数的元素的起始位置。但是当对象移动时,我希望它将每个位置(x,y)存储在返回的数组中。有关如何做到这一点的任何建议?我尝试了递归,但这并没有真正解决。

如果相关,则使用CSS @keyframes移动元素。

1 个答案:

答案 0 :(得分:1)

@mbeckish有正确的想法,因为数组是全局的,你不一定需要返回它 - 它将由函数更新。此外,似乎没有必要使用curLeft / curTop变量“累积”x,y位置。偏移量应该足够了。你需要这样的东西:

var arr = [];

var findPos = function(obj){
    arr[arr.length] = {x:obj.offsetLeft, y:obj.offsetTop}; 
}

要跟踪动画,你可以使用setInterval()或setTimeout()函数,如下所示:

var intRef = window.setInterval(function(){ findPos(obj) }, 100);

以上内容将每隔100毫秒触发一次并填充阵列。然而,这将无限期地继续,直到你停止它,所以你需要某种触发或结束时间。要关闭坐标跟踪,请使用:

window.clearInterval(intRef);