我想在鼠标移动时连续跟踪鼠标,或者至少每 0.5 秒跟踪一次:
require "curses"
include Curses
init_screen
start_color
init_pair(COLOR_BLUE,COLOR_BLUE,COLOR_WHITE)
init_pair(COLOR_RED,COLOR_RED,COLOR_WHITE)
crmode
noecho
stdscr.keypad(true)
close = false
begin
mousemask(BUTTON1_CLICKED|BUTTON2_CLICKED|BUTTON3_CLICKED|BUTTON4_CLICKED)
count = 0
while( count < 10 )
sleep 0.5
m = getmouse
winx = Window.new(7,30,10,10)
winx.keypad = true
winx.box(?|, ?-, ?+)
winx.setpos(2,3)
winx.addstr "Loop Count: " + count.to_s
winx.setpos(3,3)
winx.addstr "Mouse Position: " + m.inspect
winx.refresh
count += 1
end
refresh
ensure
close_screen
end
我想我已经很接近了,但由于某种原因,getmouse 返回 nill 吗?为什么是这样?getmouse 是否仅在单击等事件后才起作用?如果是这样,是不是不可能持续跟踪鼠标?
这来自红宝石文档
getmouse() 点击切换源
返回鼠标的坐标。
这将从队列中读取并弹出鼠标事件数据
请参阅 BUTTON*、ALL_MOUSE_EVENTS 和 REPORT_MOUSE_POSITION 常量
REPORT_MOUSE_POSITION
这里似乎很关键,但我真的不知道如何使用这些常量。getmouse(REPORT_MOUSE_POSITION)
不起作用..对不起,如果这主要是nooby,但那里没有太多文档。