2016-04-29 9 views
1

私はラケットでゲームプロジェクトを行っています。私は自分のボタンのコールバックプロシージャを作成して、スタートメニューからゲームに行くことができます。 。私が定義され、このボタンを持っている:RACKETボタンを使用してキャンバスを読み込むコールバックプロシージャ%

(define *starta-spelet* 
    (new button% 
     [parent *menyruta*] 
     [label "Starta Spelet"] 
     [min-width 130])) 

をし、Button%のコールバック引数がある私は、パネル%が含まれていた(私のスタートメニューから私を取る私の手順を定義する必要があります方法を知っている(ここではhttps://docs.racket-lang.org/gui/button_.htmlを見て)が、私はいけませんand fram%)を私のゲーム(キャンバス上に構築されています)に貼り付けます。

また、ゲームやスタートメニューには、ファイル

私は私が得ることができるすべての助けに感謝

.rkt別々のファイルに作成されます。何かが不明な場合は教えてください。

答えて

1

あなたの説明に合った例を示します。 フレームの内容の変更がstart-container-sequenceend-container-sequenceの間の になっていることに注意してください。 これは、 ゲームキャンバスを追加する前にシステムをGUIでレンダリングするのを防ぐために行われます。

#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) 
関連する問題