我想要一个div移动,当鼠标在x距离内。
$(document).mousemove(function(e) {
mX = e.pageX;
mY = e.pageY;
distance = calculateDistance(element, mX, mY);
if (distance<100) {
$(element).css("left", moveAcc + "px");
moveAcc = moveAcc + 1;
}
});JSFiddle -您必须选择jQuery1.11.0库
但是因为条件在mousemove函数中,所以它只能在鼠标被移动时移动元素,而不是当鼠标在x距离内移动。
为此,我需要一个更新的东西,一些检查条件是否符合每一帧。
例如,在Pascal中,对于我的项目,我会将整个代码放在重复之间,直到()
在ActionScript中有addEventListener(Event.ENTER_FRAME,function);
,我能在Javascript中使用什么?,你会想出其他的方法吗?-我确实找到了这个Javascript Version of AS3 enterframe event,但是它已经4岁了,现在已经不一样了。
将代码放入setInterval函数可以吗?
发布于 2015-05-25 18:16:22
您正在寻找requestAnimationFrame方法。
它能做什么?在呈现下一个框架之前,它将执行传递给它的方法。但是请注意,并不是所有的浏览器都支持它,您可以为它使用多填充,也可以只使用setInterval。
示例:
function checkDistance () {
\\ Do your job here
window.requestAnimationFrame(checkDistance);
}
window.requestAnimationFrame(checkDistance);更多信息:
https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
发布于 2015-05-25 18:21:50
你有两种方法可以做到:
如果有编写良好的鼠标事件侦听器,则不需要使用interval更新函数。
发布于 2015-05-25 18:32:48
我会尝试在mousemove方法之外声明您的鼠标X和Y变量,这样,即使当鼠标停止移动时,最后一个位置(当前确实)仍然是可访问的。
var mX;
var mY;
$(document).mousemove( function(e) {
mX = e.pageX;
mY = e.pageY;
});然后,您可以在间隔上使用第二个方法来检查这些变量中的值,并相应地移动该框。
setInterval(function(){
// Code to calculate distance etc.
distance = calculateDistance(element, mX, mY);
if (distance<100) {
$(element).css("left", moveAcc + "px");
moveAcc = moveAcc + 1;
}
},100); // Whatever interval you see fit instead of 100mshttps://stackoverflow.com/questions/30443879
复制相似问题