我有一个学校项目要在球拍中创建俄罗斯方块的版本,我必须实现一个我被卡住的暂停/继续按钮。我的尝试:
(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))]))
目前只实现了暂停功能,但它不起作用。我在第二次定义时收到一条错误消息。
*我的游戏画布*就是游戏图形所在的画布。
我感谢所有的答案。
/卡斯珀
编辑:
我得到的错误:
initialization for button%: contract violation
expected: (procedure-arity-includes/c 2)
given: #<procedure:...0160511/game.rkt:61:17>
问题在于这个子句:
[callback (lambda ()
(send *my-timer* stop))]
回调需要接受两个参数:按钮和事件。
试试这个:
[callback (lambda (button event)
(send *my-timer* stop))]