首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动更新Javascript

自动更新Javascript
EN

Stack Overflow用户
提问于 2015-05-25 18:12:18
回答 3查看 262关注 0票数 1

我想要一个div移动,当鼠标在x距离内。

代码语言:javascript
复制
$(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函数可以吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-25 18:16:22

您正在寻找requestAnimationFrame方法。

它能做什么?在呈现下一个框架之前,它将执行传递给它的方法。但是请注意,并不是所有的浏览器都支持它,您可以为它使用多填充,也可以只使用setInterval

示例:

代码语言:javascript
复制
function checkDistance () {
    \\ Do your job here
    window.requestAnimationFrame(checkDistance);
}
window.requestAnimationFrame(checkDistance);

更多信息:

https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame

票数 1
EN

Stack Overflow用户

发布于 2015-05-25 18:21:50

你有两种方法可以做到:

  1. 在文档对象上添加事件侦听器,并测量元素位置和鼠标位置,然后检查当前鼠标位置是否在这些位置之间。(如果只有一个元素,则不建议使用这种方法)
  2. 直接在元素上添加事件侦听器,并检查当前鼠标位置是否与所需的位置完全相同。

如果有编写良好的鼠标事件侦听器,则不需要使用interval更新函数。

票数 1
EN

Stack Overflow用户

发布于 2015-05-25 18:32:48

我会尝试在mousemove方法之外声明您的鼠标X和Y变量,这样,即使当鼠标停止移动时,最后一个位置(当前确实)仍然是可访问的。

代码语言:javascript
复制
var mX;
var mY;
$(document).mousemove( function(e) {
    mX = e.pageX; 
    mY = e.pageY;
});

然后,您可以在间隔上使用第二个方法来检查这些变量中的值,并相应地移动该框。

代码语言:javascript
复制
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 100ms
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30443879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档