目前正在开发一款游戏。
当您手动单击特定对象时,使用event.clientX
和event.clientY
,粒子会飞到您单击它的位置。
我正在实现一项功能,您可以在其中创建“工人”并将其设置为每隔几秒钟单击一次的特定x,y坐标。
目前我正在做这样的事情:
let el = document.elementFromPoint( x, y )
el.click()
但是,这样做的缺点是它没有附加包含x
的事件,并且y
的坐标与常规click事件一样。有办法传递吗?
编辑:
所以可以说,每当您单击div.square
时,粒子就会出来。
我在div.square
上有一个点击事件监听器,看起来像这样:
square.onclick = ( event ) => {
create_particles( event )
}
如果我要通过执行click()
模拟一次点击,则会触发square.onclick
,但是event
参数将为空。有办法以某种方式通过这些坐标吗?
答案 0 :(得分:0)
也许您可以创建一个事件对象,用clientX
和clientY
的必要值填充该事件对象,然后将该对象传递给create_particles()
。
因此,与此类似:
// let el = document.elementFromPoint( x, y )
// el.click()
// Create an event object, and populate clientX/clientY fields with x/y
var event = new MouseEvent('click', {
clientX: x,
clientY: y
});
// Invoke create_particles with your event object
create_particles( event )
或者,您可以在注册dispatch
侦听器的DOM元素上click
事件,通过执行以下操作来触发click
事件逻辑:
var event = new MouseEvent('click', {
clientX: x,
clientY: y
});
// Cause the 'click' event to be invoked on the square DOM element
square.dispatchEvent(event);