我有一个学校项目,用球拍创建一个俄罗斯方块版本,我必须这样做 实现一个我停下来的暂停/继续按钮..我的尝试:
(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 *是游戏画面发生的画布。
我很欣赏所有答案。
/ Kasper
编辑:
我得到的错误:
initialization for button%: contract violation
expected: (procedure-arity-includes/c 2)
given: #<procedure:...0160511/game.rkt:61:17>
答案 0 :(得分:1)
问题在于这个条款:
[callback (lambda ()
(send *my-timer* stop))]
回调需要带两个参数:按钮和事件。
试试这个:
[callback (lambda (button event)
(send *my-timer* stop))]