是否可以在没有鼠标的情况下直接获取鼠标事件?

时间:2017-10-06 20:04:09

标签: functional-programming mouseevent racket

我非常需要直接使用鼠标事件

是否有可能在不使用大爆炸的情况下获得鼠标事件?

即我想构建如下函数:

(define (check-if-button-down mev) (mouse=? mev "button-down"))

但是为了获得mev,输入来自bigbang的鼠标

关于我: 我是球拍编程的新手

2 个答案:

答案 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))