我非常需要直接使用鼠标事件
是否有可能在不使用大爆炸的情况下获得鼠标事件?
即我想构建如下函数:
(define (check-if-button-down mev) (mouse=? mev "button-down"))
但是为了获得mev,输入来自bigbang的鼠标
关于我: 我是球拍编程的新手
答案 0 :(得分:1)
简短回答:不是真的。
但是:当发生鼠标事件时,大爆炸模型会调用鼠标事件处理程序,因此如果您想知道鼠标按钮是否被按下,您的世界状态应该包含一个布尔值,指示鼠标按钮是否被按下,以及鼠标事件处理程序应该返回一个正确更新此布尔值的世界状态。
这个架构有什么理由不适合你吗?
答案 1 :(得分:1)
如果这是一个学生项目,你可能不得不坚持大爆炸提供的东西(见John Clements'回答)。
但是,如果您可以使用racket/gui
(作为语言#lang racket/gui
或另外(require racket/gui)
),那么您正在寻找get-current-mouse-state
。
例如
#lang racket
(require racket/gui)
(define (mouse-button-down?)
(define-values (pt state)
(get-current-mouse-state))
(if (or (memq 'left state)
(memq 'right state)
(memq 'middle state))
#t
#f))