RACKET 回调程序通过按钮加载 canvas%%
RACKET Callback procedure to load canvas% via button%
我正在用 Racket 做一个游戏项目,我一直在思考如何为我的按钮创建一个回调过程,这样我就可以从我的开始菜单转到我的游戏了。我定义了这个按钮:
(define *starta-spelet*
(new button%
[parent *menyruta*]
[label "Starta Spelet"]
[min-width 130]))
按钮 % 有一个回调参数(看这里 https://docs.racket-lang.org/gui/button_.html),但我不知道我应该如何定义我的程序,它将我从开始菜单(包含面板 % 和 fram %)带到我的游戏(基于 canvas)。
此外,游戏和开始菜单是在单独的文件 .rkt 文件中创建的
感谢所有能得到的帮助。如果我不清楚,请告诉我。
这是一个与您的描述相符的示例。
请注意,对框架的内容进行了更改
在 start-container-sequence
和 end-container-sequence
之间。
这样做是为了防止系统在渲染 GUI 之前
我们添加了游戏-canvas.
#lang racket
(require racket/gui)
;;; GUI
;; The frame holds either a start-panel or a game-panel
(define the-frame (new frame% [label "A frame"] [min-width 200] [min-height 200]))
;; The start-panel contains a start button
(define (make-start-panel)
(define start-panel (new panel% [parent the-frame]))
(define start-button (new button% [parent start-panel] [label "Start"]
[callback (λ (b e) (on-start-button b e))]))
start-panel)
;; The game-panel contains a canvas
(define (make-game-panel)
(define game-panel (new panel% [parent the-frame])) ; will be set to the-frame later
(define game-canvas (new canvas% [parent game-panel] [min-width 200] [min-height 200]))
game-panel)
;;; Event Handlers
(define (on-start-button button event)
(send the-frame begin-container-sequence)
(send the-frame delete-child the-start-panel)
(make-game-panel)
(send the-frame end-container-sequence))
;;; Begin Program
(define the-start-panel (make-start-panel))
(send the-frame show #t)
我正在用 Racket 做一个游戏项目,我一直在思考如何为我的按钮创建一个回调过程,这样我就可以从我的开始菜单转到我的游戏了。我定义了这个按钮:
(define *starta-spelet*
(new button%
[parent *menyruta*]
[label "Starta Spelet"]
[min-width 130]))
按钮 % 有一个回调参数(看这里 https://docs.racket-lang.org/gui/button_.html),但我不知道我应该如何定义我的程序,它将我从开始菜单(包含面板 % 和 fram %)带到我的游戏(基于 canvas)。
此外,游戏和开始菜单是在单独的文件 .rkt 文件中创建的
感谢所有能得到的帮助。如果我不清楚,请告诉我。
这是一个与您的描述相符的示例。
请注意,对框架的内容进行了更改
在 start-container-sequence
和 end-container-sequence
之间。
这样做是为了防止系统在渲染 GUI 之前
我们添加了游戏-canvas.
#lang racket
(require racket/gui)
;;; GUI
;; The frame holds either a start-panel or a game-panel
(define the-frame (new frame% [label "A frame"] [min-width 200] [min-height 200]))
;; The start-panel contains a start button
(define (make-start-panel)
(define start-panel (new panel% [parent the-frame]))
(define start-button (new button% [parent start-panel] [label "Start"]
[callback (λ (b e) (on-start-button b e))]))
start-panel)
;; The game-panel contains a canvas
(define (make-game-panel)
(define game-panel (new panel% [parent the-frame])) ; will be set to the-frame later
(define game-canvas (new canvas% [parent game-panel] [min-width 200] [min-height 200]))
game-panel)
;;; Event Handlers
(define (on-start-button button event)
(send the-frame begin-container-sequence)
(send the-frame delete-child the-start-panel)
(make-game-panel)
(send the-frame end-container-sequence))
;;; Begin Program
(define the-start-panel (make-start-panel))
(send the-frame show #t)