2017-10-06 10 views
0

マウスイベントを直接使用する必要があります。ラケットでマウスを使わずにマウスイベントを直接取得することは可能ですか?

ビッグバンを使用せずにマウスイベントを取得することはできますか?

私は次のような機能を構築したいすなわち:

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

しかしMEVを取得するために、入力は、オンマウス私についてBIGBANG

のから供給されている: 私はラケットプログラミングの初心者

答えて

1

短い答え:本当にそうではありません。

ただし、ビッグバンモデルでは、マウスイベントが発生したときにマウスイベントハンドラが呼び出されるため、マウスボタンが押されたかどうかを知りたい場合は、ワールド状態にマウスボタンが押されたかどうかを示すブール値を含める必要があります。マウスイベントハンドラは、このブール値を正しく更新するワールド状態を返します。

このアーキテクチャーがあなたに適していない理由はありますか?

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)) 
関連する問題