ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] 화면 전환, 애니메이션 (Hangman5)
    Java 2022. 2. 9. 23:05

     

    START 페이지를 만들고 애니메이션을 넣은 화면 전환을 구현하였다.

     

     

     

     

    화면 전환은 StackPane 을 사용하였다.

    씬빌더를 사용해서 시작 화면을 만들었고 시작화면과 연결되는 controller인

    StartPageController에 화면 전환을 넣었다.

     

     

    public class startPageController implements Initializable {
    
    	@FXML private Button startBtn;
    	@FXML private Text mainText;
    
    	@Override
    	public void initialize(URL location, ResourceBundle resources) {
    	}
    
    	@FXML
    	public void gameStart(ActionEvent event) {
    		
    		startBtn.setDisable(true);
    		startBtn.setVisible(false);
    		mainText.setVisible(false);
    		
    		System.out.println("Start button clicked");
    
    		try {
    			Parent start = FXMLLoader.load(getClass().getResource("hangman.fxml"));
    			StackPane root = (StackPane) startBtn.getScene().getRoot();
    			root.getChildren().add(start);
    			root.getStylesheets().add("application/application.css");
    				
    		} catch (Exception e) {
    			// TODO
    		}
    
    	}
    }

     

     

    gameStart 버튼을 누르면 게임 화면 fxml 인 hangman.fxml 을 불러오고

    현재 화면의 stackpane에 hangman.fxml 을 넣어준다.

     

     

     

    public class startPageController implements Initializable {
    
    	@FXML private Button startBtn;
    	@FXML private Text mainText;
    
    	@Override
    	public void initialize(URL location, ResourceBundle resources) {
    	}
    
    	@FXML
    	public void gameStart(ActionEvent event) {
    		
    		startBtn.setDisable(true);
    		startBtn.setVisible(false);
    		mainText.setVisible(false);
    		
    		System.out.println("Start button clicked");
    
    		try {
    			
    			Parent start = FXMLLoader.load(getClass().getResource("hangman.fxml"));
    			StackPane root = (StackPane) startBtn.getScene().getRoot();
    			root.getChildren().add(start);
    			root.getStylesheets().add("application/application.css");
    			
    			//animation
    			start.setTranslateX(400);
    			Timeline timeline = new Timeline();
    			KeyValue keyvalue = new KeyValue(start.translateXProperty(),0);
    			KeyFrame keyfame = new KeyFrame(Duration.millis(500),keyvalue);
    			timeline.getKeyFrames().add(keyfame);
    			timeline.play();
    			
    		} catch (Exception e) {
    			// TODO
    		}
    
    	}
    }

     

     

    그리고 타임라인을 통해 화면이 옆으로 넘어가는 화면 전환 애니메이션을 넣었다.

     

     

    시연 영상:

     

    'Java' 카테고리의 다른 글

    [Tetris] ObjectMapper  (0) 2022.04.30
    [Java] 유닛테스트 작성하기  (0) 2022.04.26
    [Java] button, textField CSS (Hangman4)  (0) 2022.02.09
    [Java] Dictionary API (Hangman3)  (0) 2022.02.06
    [Java] Hangman2  (0) 2022.02.05

    댓글

Designed by Tistory.