2017-10-06 11 views
0

직접 마우스 이벤트를 사용할 필요가 있습니다.라켓에 마우스를 올려 놓지 않고 직접 마우스 이벤트를 얻을 수 있습니까?

빅뱅을 사용하지 않고 마우스 이벤트를 가져올 수 있습니까?

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

을하지만 백만 전자 볼트를 얻기 위해, 입력이 나에 대하여에 마우스 BIGBANG

의에서 공급되는 : 내가

즉, 나는 다음과 같은 기능을 구축하려는 라켓 프로그래밍에 익숙하지 않음

답변

1

짧은 대답 : 그렇지 않습니다.

그러나 big bang 모델은 마우스 이벤트가 발생할 때 마우스 이벤트 핸들러를 호출하므로 마우스 버튼이 눌려 졌는지 여부를 알고 싶으면 월드 상태에 마우스 버튼이 눌려 졌는지 여부를 나타내는 부울을 포함해야합니다. 마우스 이벤트 핸들러는이 부울을 올바르게 업데이트하는 월드 상태를 반환해야합니다.

이 아키텍처가 어떤 이유로 작동하지 않습니까?

1

학생 프로젝트 인 경우 빅뱅이 제공하는 것에 충실해야 할 수도 있습니다 (John Clements의 답변 참조).

하지만 (두 언어 #lang racket/gui 또는 추가 (require racket/gui)로) 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))