2017-10-06 65 views

回答

1

简短的回答:不是真的。

但是:当发生鼠标事件时,大爆炸模型会调用鼠标事件处理程序,因此如果您想知道是否按下鼠标按钮,您的世界状态应该包含指示鼠标按钮是否被按下的布尔值,以及你的鼠标事件处理程序应该返回一个正确更新这个布尔值的世界状态。

是否有某些原因,这种架构不适合你?

1

如果这是一个学生项目,你可能必须坚持什么大爆炸提供(见约翰克莱门斯的答案)。

但是,如果您可以使用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))