Javascript 查找水平移动元素的每个X,Y位置
我在这方面遇到了不少麻烦。以下是我目前掌握的情况:Javascript 查找水平移动元素的每个X,Y位置,javascript,arrays,object,position,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; } 这只返回传递到函
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
@关键帧移动 @mbeckish的想法是正确的,因为数组是全局的,所以您不必返回它-它将由函数更新。此外,似乎没有必要使用curLeft
/curTop
变量“累积”x,y位置。偏移量应足够大。你需要这样的东西:
var arr = [];
var findPos = function(obj){
arr[arr.length] = {x:obj.offsetLeft, y:obj.offsetTop};
}
var intRef = window.setInterval(function(){ findPos(obj) }, 100);
要随时间跟踪动画,可以使用setInterval()或setTimeout()函数,如下所示:
var arr = [];
var findPos = function(obj){
arr[arr.length] = {x:obj.offsetLeft, y:obj.offsetTop};
}
var intRef = window.setInterval(function(){ findPos(obj) }, 100);
以上内容将每100毫秒触发一次,并填充阵列。然而,这将无限期地持续下去,直到你停止它,所以你需要某种触发或结束时间。要关闭坐标跟踪,请使用:
window.clearInterval(intRef);
@mbeckish的想法是正确的,因为数组是全局的,所以您不必返回它——它将由函数更新。此外,似乎没有必要使用curLeft
/curTop
变量“累积”x,y位置。偏移量应足够大。你需要这样的东西:
var arr = [];
var findPos = function(obj){
arr[arr.length] = {x:obj.offsetLeft, y:obj.offsetTop};
}
var intRef = window.setInterval(function(){ findPos(obj) }, 100);
要随时间跟踪动画,可以使用setInterval()或setTimeout()函数,如下所示:
var arr = [];
var findPos = function(obj){
arr[arr.length] = {x:obj.offsetLeft, y:obj.offsetTop};
}
var intRef = window.setInterval(function(){ findPos(obj) }, 100);
以上内容将每100毫秒触发一次,并填充阵列。然而,这将无限期地持续下去,直到你停止它,所以你需要某种触发或结束时间。要关闭坐标跟踪,请使用:
window.clearInterval(intRef);
如果在findPos中将arr声明为局部变量,那么每次调用findPos时它都将重置为空数组。在此函数之外声明arr。如果在findPos中将arr声明为局部变量,则每次调用findPos时,它都将重置为空数组。在此函数之外声明arr。谢谢。我意识到我的一些代码是多余的,但我仍然在努力获取对象移动时的每个位置。有什么建议吗?:)@Nilzone--您可能最好使用setInterval()
函数每隔一段时间调用findPos()
函数。但是,如果你走这条路线,你也可以手动设置元素的动画,跟踪x、y位置,然后更新它们。我会试试的-谢谢!但这让我有点烦,因为我不能让它工作recursion@Nilzone--我不确定递归(一个调用自身的函数)在什么地方对这样的事情是必要的。这种技术通常用于解决分而治之的问题……很公平——无论如何,setInterval真的很有帮助——谢谢!)非常感谢。我意识到我的一些代码是多余的,但我仍然在努力获取对象移动时的每个位置。有什么建议吗?:)@Nilzone--您可能最好使用setInterval()
函数每隔一段时间调用findPos()
函数。但是,如果你走这条路线,你也可以手动设置元素的动画,跟踪x、y位置,然后更新它们。我会试试的-谢谢!但这让我有点烦,因为我不能让它工作recursion@Nilzone--我不确定递归(一个调用自身的函数)在什么地方对这样的事情是必要的。这种技术通常用于解决分而治之的问题……很公平——无论如何,setInterval真的很有帮助——谢谢!)