ID:1304707
 
(See the best response by Kaiochao.)
Problem description:

I'm having trouble finding a good combination of mouse controls that can be used to simulate swiping objects in a linear fashion. (Look up the game Ruzzle if you'd like an example.)
It would be really awesome if you could point me in the right direction to the correct set of mouse controls that I should use to make this happen. I've already tried client.MouseDown()/client.MouseUp() for checking whether the mouse is down or not in combination with MouseEntered() on the objects, but apparently those don't work very well together because MouseEntered() doesn't register if you're holding down your mouse for some reason.

Can anyone think of a work-around?
Thanks for helping! :)

MouseDrag(), my friend. ^^
Best response
MouseDrag() is like the mouse-down version of MouseEntered().

Forum_account's mouse position library uses both, naturally. I've used it to make an accurate click and drag system, and it works well on my tablet computer as well.
client
var mouse_px
var mouse_py

MouseUpdate(tx, px, ty, py)
var new_mouse_px = tile_width * (tx - 1) + px
var new_mouse_py = tile_height * (ty - 1) + py
!isnull(mouse_px) && MouseMoved(new_mouse_px - mouse_px, new_mouse_py - mouse_py)
mouse_px = new_mouse_px
mouse_py = new_mouse_py
..()

var tmp/atom/dragging
proc/MouseMoved(dx, dy)
dragging && dragging.MouseDragged(dx, dy)

MouseDown(o)
..()
dragging = o
track_mouse(true, 1)

MouseUp()
..()
dragging = null
track_mouse(false)

atom
proc/MouseDragged(dx, dy)

obj/dragger
MouseDragged(dx, dy)
Move(loc, dir, step_x + dx, step_y + dy)

Off the top of my head, that's about how I did it.
I can use this to simulate what I wanted, but I was thinking more specifically of a way to have MouseEntered() work while your mouse cursor was held. If that ends up more simple than my work-around I would appreciate it! :)