我正在 Common Lisp 中制作一个简单的小程序,我想使用鼠标移动来控制它。我用 LTK 作为窗口。我找不到任何可以检索鼠标位置的函数。例如,Emacs Lisp 有(鼠标像素位置)。我发现这在罗塞塔代码上 https://rosettacode.org/wiki/Mouse_position,但没有 Common Lisp 条目。我能做些什么?
这个SO答案的提示:鼠标位置 Python Tkinter https://stackoverflow.com/questions/22925599/mouse-position-python-tkinter
并查看 ltk 的文档:http://www.peter-herth.de/ltk/ltkdoc/node16.html http://www.peter-herth.de/ltk/ltkdoc/node16.html
我得到了以下示例来检索鼠标移动触发的任何事件:
(ql:quickload "ltk")
(in-package :ltk-user)
(defun motion (event)
(format t "~a~&" event))
(with-ltk ()
(bind *tk* "<Motion>" #'motion))
这会打开一个小窗口,里面什么也没有。一旦你把鼠标放进去,你就会得到很多事件:
#S(EVENT
:X 0
:Y 85
:KEYCODE ??
:CHAR ??
:WIDTH ??
:HEIGHT ??
:ROOT-X 700
:ROOT-Y 433
:MOUSE-BUTTON ??)
…
The #S
表示我们处理一个结构,名为EVENT
,所以我们可以通过以下方式访问它的插槽(event-x event)
, event-mouse-button
等参见https://lispcookbook.github.io/cl-cookbook/data-structs.html#slot-access https://lispcookbook.github.io/cl-cookbook/data-structures.html#slot-access
另外,您可能想加入 freenode 上的 CL 社区,那里有一些游戏开发人员。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)