1

我有一个学校项目要在球拍中创建俄罗斯方块的版本,我必须实现一个暂停/继续按钮,我被卡住了。我的尝试:

(define *my-timer*
  (new timer%
       [notify-callback (lambda () (send *my-game-canvas* refresh))]))

(define *pause*
  (new button%
       [parent *my-window*]
       [label "Pause"]
       [callback (lambda ()
                   (send *my-timer* stop))]))

目前只实现了暂停功能,但它不起作用。我在第二个定义时收到一条错误消息。

*my-game-canvas * 是游戏图形发生的画布。

我很感激所有的答案。

/ 卡斯帕

编辑:

我得到的错误:

initialization for button%: contract violation
  expected: (procedure-arity-includes/c 2)
  given: #<procedure:...0160511/game.rkt:61:17>
4

1 回答 1

1

问题是这个条款:

   [callback (lambda ()
               (send *my-timer* stop))]

回调需要接受两个参数:按钮和事件。

试试这个:

   [callback (lambda (button event)
               (send *my-timer* stop))]
于 2016-05-17T18:07:17.193 回答