JavaFX - Как мне добавить «изображение», наложенное поверх сцены? - PullRequest
0 голосов
/ 13 февраля 2019

Я делаю 2D-игру с JavaFX.Есть фон, который устанавливается как игровая сцена.

Как добавить изображение, которое будет действовать как «танк», которым может управлять игрок, чтобы перемещать и стрелять, который будет наслоен поверх сцены (с фоном)?

Стоит отметить, что у танка будут параметры топора, y и вращения.Тогда столкновения будут применены к танку, в котором он также может стрелять пулями.

Это работает в Eclipse IDE и JavaFX.Я попытался добавить другой метод к своему ViewManager и вызвать метод из конструктора ViewManager.Я также добавил сцену в Main.java, чтобы можно было показать обе сцены.

Это из Main.java

import javafx.application.Application; //import JavaFX libraries
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.shape.Rectangle;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.stage.Stage;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage)
    {
        try
        {
            ViewManager manager = new ViewManager();
            primaryStage = manager.getMainStage();
            primaryStage.setScene(manager.drawImageOnScreen(50, 50, 0, "image path"));
            primaryStage.show();
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }//end catch
    }//end start

    public static void main(String[] args)
    {
        launch(args);
    }//end main
}//end class

Это мой ViewManager.java, который пытается добавить изображение поверх сцены.

/* I've discarded the imported libraries and packages*/

public class ViewManager {

    private static final int HEIGHT = 1000;
    private static final int WIDTH = 1366;
    private AnchorPane mainPane;
    private Scene mainScene;
    private Stage mainStage;

    private final static int GAME_BUTTON_START_X = 100;
    private final static int GAME_BUTTON_START_Y = 150;

    List<WarstrikeButton> gameButtons;

    public ViewManager()
    {
        //Initialize the game stage
        initializeStage();

        //Initialize the game buttons
        gameButtons = new ArrayList<>();
        createButtons();

        //Create background
        createBackground();

    }//end viewManager

    private void initializeStage() {
        mainPane = new AnchorPane();
        mainScene = new Scene(mainPane, WIDTH, HEIGHT);
        mainStage = new Stage();
        mainStage.setScene(mainScene);
    }

    public Stage getMainStage()
    {
        return mainStage;
    }

    private void addGameButton(WarstrikeButton button)
    {
        button.setLayoutX(GAME_BUTTON_START_X);
        button.setLayoutY(GAME_BUTTON_START_Y + gameButtons.size() * 100);
        gameButtons.add(button);
        mainPane.getChildren().add(button);
    }

    private void createButtons()
    {

        createMoveButton();
        createShootButton();

    }//end createButtons method

    private void createMoveButton()
    {
        WarstrikeButton moveButton = new WarstrikeButton("Move");
        addGameButton(moveButton);
    }

    private void createShootButton()
    {
        WarstrikeButton shootButton = new WarstrikeButton("Shoot");
        addGameButton(shootButton);
    }

    private void createBackground()
    {
        Image backgroundImage = new Image("src/com/warstrike/graphics/resources/2d-game-background-6.jpg", 1366, 1000, false, true);
        BackgroundImage background =  new BackgroundImage(backgroundImage, BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT, BackgroundPosition.DEFAULT, null);
        mainPane.setBackground(new Background(background));
    }//end createBackground function

//end class

    public Scene drawImageOnScreen(double x, double y, double rotation, String imagePath) throws FileNotFoundException
    {
        //Creating an image 
          Image image1 = new Image(new FileInputStream(imagePath));  

          //Setting the image view 
          ImageView imageView = new ImageView(image1); 

          //Setting the position of the image 
          imageView.setX(x); 
          imageView.setY(y); 
          imageView.setRotate(rotation);

          //setting the fit height and width of the image view 
          imageView.setFitHeight(x); 
          imageView.setFitWidth(y); 

          //Setting the preserve ratio of the image view 
          imageView.setPreserveRatio(true);

          Group root = new Group(imageView);  

          //Creating a scene object 
          Scene scene = new Scene(root, 600, 500);  

          return scene;


    }//end drawImageOnScreen function

}

Я не уверен, как мне поступить.Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...