我在这方面遇到了很多麻烦。这是我到目前为止所做的:
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
移动元素。
答案 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);