2014-05-11 170 views
1

我想在擴展場景的類中繪製畫布。當我在延伸Application的類「GUI」中創建的場景上按下按鈕時,應顯示此場景。用JavaFX顯示另一個場景[場景圖形問題]

問題: 我不明白如何使用Scene構造函數中的「parent」參數。所以我無法顯示場景的內容。

當我使用:

Scene gameScene = new GameScene(root,800,600); 

我會得到一個錯誤,因爲根已被設置爲另一個場景根。

使用遊戲而不是根目錄所有編譯都很好,並且場景不顯示,但場景內容沒有顯示。

在GameScene類中,我嘗試過使用兩種不同類型的顯示內容。

  1. 設置圖像的ImageView mapView(我不知道我已經到ImageView的添加爲孩子的節點{像parent.getChildren().add(mapView)不起作用})
  2. 試圖借鑑畫布。 (如上同樣的問題在哪裏添加此畫布?)

GUI類:

public class GUI extends Application { 
    public static void main(String[] args) { launch(args); } 

    public void start(Stage primaryStage){ 
     StackPane root = new StackPane(); 

     Group game = new Group(); 
     root.getChildren().add(game); 
     Scene gameScene = new GameScene(game,800,600); 

     Button btn = new Button(); 
     btn.setText("Start Game"); 
     btn.setOnAction(new EventHandler<ActionEvent>() { 

      @Override 
      public void handle(ActionEvent event) { 
       primaryStage.setScene(gameScene); 
       primaryStage.show(); 
      } 
     }); 

     root.getChildren().add(btn); 

     primaryStage.setScene(new Scene(root, 650,450)); 
     primaryStage.show(); 
    } 
} 

而且GameScene類:

public class GameScene extends Scene { 
    private final double WIDTH; 
    private final double HEIGHT; 
    public Canvas mapCanvas; 
    private Map map; 

    public GameScene(Parent parent, double x, double y) { 
     super(parent, x, y); 
     ImageView mapView = new ImageView(); 
     WIDTH = x; 
     HEIGHT = y; 
     this.map = new Map((int)x,(int)y); 
     mapCanvas = new Canvas(WIDTH,HEIGHT); 
     mapView.setImage(map.getImage()); 

     GraphicsContext graphicsContext = mapCanvas.getGraphicsContext2D(); 
     draw(graphicsContext); 
    } 

    public void draw(GraphicsContext gc){ 
     gc.fillRect(10, 10, 100, 50); 
    } 
} 

PS:Jeah!我在這個論壇上的第一個問題。你好,世界!

回答

0

一年後...

取代 「父」 與 「集團」 或做:(集團)母公司