plt-scheme:在画布上捕捉鼠标点击事件

问题描述:

我正在编写一个plt-scheme中的井字游戏作为我的AI课程项目。 gui的想法是一个带有9个框的网格,每个框都有一个画布,使用窗格... 当用户点击画布时,会相应绘制'X'或'O'...plt-scheme:在画布上捕捉鼠标点击事件

问题是我如何在画布上捕捉鼠标点击事件? 我发现我需要使用on-event,但仍不知道如何? 任何线索?

好吧,我知道了......

(define canvas-box% 
    (class canvas% 
    (define/override (on-event e) 
      (when (equal? (send e get-event-type) 'left-down) (foobar-callback))) 
    (super-new))) 

我得到了所有的鼠标和键盘命令用途的任何地方 这里。

(define my-canvas% 

(class canvas% 
    (define/override (on-event event) 
    (and 
     (send test reader (list (number->string (send event get-x)) 
        (number->string (send event get-y)))) 
     (send test reader (list (send event get-event-type))))) 
(define/override (on-char event) 
    (define pressed (send event get-key-code)) 
    (if (char? pressed) (send test reader (list (make-string 1 pressed))) '())) 
    (super-new))) 

(define tester% 
(class object% 
    (super-new) 
    (define command '()) 

    (define/public (reader x) 
    (and (set! command x) 
     (display x)) 
    ) 
    (define/public (outer) 
    command) 
))