[英]Purescript MouseEvent to get x y of mouse
I am new to purescript and was trying to make a 3d cube rotate on mouse events. 我是purescript的新手,并试图使3d多维数据集在鼠标事件时旋转。 But I cannot get x and y coordinates of mouse pointer on mouse move event. 但是在鼠标移动事件上我无法获得鼠标指针的x和y坐标。 I am attaching my code below which have a event listener. 我在下面附有事件监听器的代码。 Can somebody help me in getting x and y coordinates of mouse or can tell me better way to write event listener for mouse. 有人可以帮助我获取鼠标的x和y坐标,还是可以告诉我更好的编写鼠标事件侦听器的方法。
node <- querySelector "#canvas"
for_ node $ addEventListener "mousedown" $ void do
modifyRef drag \d -> true
xz <- getPageX
log (show xz)
x <- liftEff $ Window.screenX =<< window
y <- liftEff $ Window.screenX =<< window
modifyRef old_x \ox -> toNumber x
modifyRef old_y \oy -> toNumber y
log (show y)
for_ node $ addEventListener "mouseup" $ void do
modifyRef drag \d -> false
for_ node $ addEventListener "mouseout" $ void do
modifyRef drag \d -> false
for_ node $ addEventListener "mousemove" $ void do
--log "Mouse Moved!"
x <- liftEff $ Window.screenX =<< window
y <- liftEff $ Window.screenX =<< window
ox <- readRef old_x
oy <- readRef old_y
modifyRef dX \dx -> (toNumber x - ox) * 2.0 * pi / 600.0
modifyRef dY \dy -> (toNumber y - oy) * 2.0 * pi / 650.0
dx <- readRef dX
dy <- readRef dY
dg <- readRef drag
if dg == true then do
modifyRef alpha \al -> al + dx
modifyRef beta \bt -> bt + dy
modifyRef old_x \ox -> toNumber x
modifyRef old_y \oy -> toNumber y
--modifyRef gamma \ga -> ga + 3.0 * pi/180.0
else
pure unit
You are using window.screenX
and window.screenY
, which is not what you want . 您使用的不是 window.screenX
和window.screenY
。 You need to use screenX
and screenY
from the MouseEvent
type instead. 您需要改用MouseEvent
类型的screenX
和screenY
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.