2017-04-13 100 views
0

我想下面的代碼拿起上/下/左/右按鍵,修改對http://docs.racket-lang.org/gui/windowing-overview.html入門鑰匙從鑰匙事件按下球拍

(define fr (new frame% [label "Testing"] [width 300] [height 300])) 
(define msg (new message% [parent fr] [label ""])) 

(define my-canvas% 
    (class canvas% 
    (define/override (on-char key-event) 
     (cond 
     [(equal? key-event 'up) (send msg set-label "UP")] 
     [(equal? key-event 'down) (send msg set-label "DOWN")] 
     [(equal? key-event 'left) (send msg set-label "LEFT")] 
     [(equal? key-event 'right) (send msg set-label "RIGHT")] 
     [else (send msg set-label "Others")])) 
    (super-new))) 

(new my-canvas% [parent fr] 
    [paint-callback 
     (lambda (canvas dc) 
     (send dc draw-ellipse 140 120 20 20))]) 

(send fr show #t) 

的關鍵事件代碼從http://docs.racket-lang.org/gui/key-event_.html?q=event

所採取的示例

但是,上/下/右/左鍵未正確識別,只有「其他」顯示在消息中。問題在哪裏,如何糾正。

回答

0
  1. (equal? key-event <key-code>)替換爲(equal? (send key-event get-key-code) <key-code>)
  2. [stretchable-width #t]添加到msg的初始化參數列表中,否則您將無法看到輸出。