我想知道当元素(图像)触摸,进入,越过另一个元素(包含另一个图像的div)时,是否完全有可能触发jquery事件(显示的内容)。

我正在玩只使用Javascript,CSS和HTML制作愚蠢的小游戏,并且试图弄清楚如何部署事件,就像.click()或触摸字符(图像)时的其他任何事件一样。或输入另一个元素(其中包含图片的div)。我使用w,a,s,d使角色(图像元素)移动,我希望它在触摸到某物时触发事件。

最佳答案

我必须在这里做一些假设。您有对象A,该对象正在使用wasd键移动,并且您有对象B和C。您已经有一个事件,它监听wasd键并移动​​对象A。在移动对象A之后,您需要计算A的边界(左,右,上,下),并与对象B和对象C的边界进行比较。

您可以使用$ element.offset()获取左侧和顶部,然后右侧为left + width和bottom为top + height。

因此,一旦拥有所有对象的对象,对象就会相交:

aTopOverlap = a.top > b.top && a.top < b.bottom;
aBottomOverlap = a.bottom > b.top && a.bottom < b.bottom;
aLeftOverlap = a.left > b.left && a.left < b.right;
aRightOverlap = a.right > b.left && a.right < b.left;
aVerticalOverlay = b.top > a.top && b.bottom < a.bottom;
aHorizontalOverlay = b.left > a.left && b.right < a.right;

if ((aTopOverlap || aBottomOverlap || aVerticalOverlay) && (aLeftOverlap || aRightOverlap || aHorizontalOverlay)) {
    //collision logic here
}

09-26 01:17
查看更多