javascript - 当动画元素接触鼠标时触发 mouseenter

标签 javascript jquery html css animation

我是网络开发新手,正在构建一个游戏,其目标是避免指针接触动画圆圈。我使用 mouseenter 事件进行了设置(下面是完整的 JSFiddle):

$("#"+circleName).mouseenter(function(){
    $(this).attr("class", "redcircle");
    });

当用户将指针移入圆圈时,圆圈会变成红色。然而,当鼠标静止时,圆圈可以安全地穿过它。有更好的方法吗?

通过将mouseenter事件更改为hover事件,当动画圆圈接触静止鼠标时触发该事件。不过,似乎有延迟。有谁知道为什么会这样?

这听起来像是与此处发现的问题有关,这意味着它可能与相关的浏览器错误有关:

getting a mouseenter event from a still mouse entering an animated element

fiddle :http://jsfiddle.net/nbsteuv/6yok3s56/4/

最佳答案

我会存储最后的鼠标位置,然后每当圆移动时,检查它是否与鼠标位置相交。

var mouseX, mouseY;

$( "#container-element-id" ).mousemove(function( event ) {
  mouseX = event.pageX;
  mouseY = event.pageY;
});

定义一个函数来计算一个点是否在圆内...

function isPointInCircle(pX, pY, cX, cY)
{
    // Do some math here
}

然后,在动画代码中,每当圆圈移动时,检查是否有交叉点...

if(isPointInCircle(mouseX, mouseY, circle.left, circle.top))
{
    // color circle red
}

关于javascript - 当动画元素接触鼠标时触发 mouseenter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32193380/

相关文章:

javascript - 从字符串中删除除图像标签之外的 html 标签

javascript - 获取标签之间的变量并附加到 URL

javascript - AJAX为什么叫异步?

javascript - 将取自变量的键名推送到数组

HTML5 <a> 标签作为容器对 SEO 不利?

javascript - 使用 jQuery 打开点击的元素并关闭任何其他打开的元素

提交表单时,javascript blockUI 在 firefox 中不起作用

jquery - 不透明度动画在 jQuery 和 CSS 中不起作用

html - 在同一行的图像上重叠透明阴影

html - Chrome 和 Firefox 之间 flexbox 行为的差异