2017-10-23 15 views
0

次の作業を行う前に、遅延を追加しようとしています。ここに私のコードです:javafxの遅延n秒

GUIはGUIがロードされたときに、3.5秒の起動に持つメッセージをログに記録する前に、それはメッセージをログに記録することになる、ということです私は何を達成したい
private void startup() { 
    Timer timer = new Timer(); 
    timer.schedule(new TimerTask() { 
     public void run() { 
      Platform.runLater(() -> { 
       mainPane.setBackground(new Background(new BackgroundFill(Color.rgb(28, 28, 28), null, null))); 
       logPane.setBackground(new Background(new BackgroundFill(Color.rgb(28, 28, 28), null, null))); 
       startupAnimation(); 
      }); 
     } 
    }, 3500); 
    logMessage(Mavis.LOG_INITIALIZE); 

private void startupAnimation() { 
    FadeTransition ftMain = new FadeTransition(Duration.millis(1200), mainPane); 
    ftMain.setFromValue(0); 
    ftMain.setToValue(1); 
    ftMain.setCycleCount(1); 
    FadeTransition ftLog = new FadeTransition(Duration.millis(1200), logPane); 
    ftLog.setFromValue(0); 
    ftLog.setToValue(1); 
    ftLog.setCycleCount(1); 
    ParallelTransition pt = new ParallelTransition(); 
    pt.getChildren().addAll(ftMain, ftLog); 
    TranslateTransition tt = new TranslateTransition(Duration.millis(800), mavisImgView); 
    tt.setByX(-210); 
    tt.setCycleCount(1); 
    FadeTransition ftOver = new FadeTransition(Duration.millis(1500), overlayPane); 
    ftOver.setFromValue(0); 
    ftOver.setToValue(1); 
    ftOver.setCycleCount(1); 
    SequentialTransition seq = new SequentialTransition(pt,tt, ftOver); 
    seq.play(); 
} 

private void logMessage(String msg) { 
    Timer timer = new Timer(); 
    timer.schedule(new TimerTask() { 
     public void run() { 
      Platform.runLater(() -> { 
       logTxtArea.setText(msg); 
       chatBalloon.setVisible(true); 
      }); 
     } 
    }, 1500); 
} 

。問題は、メッセージがすでにGUIの起動とともにログに記録されていることです。ここで問題と思われるものは何ですか?使用されるタイマーはjava.util.Timerです。

答えて

1

初期遅延の場合はPauseTransitionを入力し、SequentialTransitionの先頭に追加します。

+0

私はstartupAnimationの後、logMessage(Mavis.LOG_INITIALIZE)の前に遅延が必要です。 – NEWBIEHERE

+0

その後、 'SequentialTransition'の最後に別の' PauseTransition'を追加してください。次の終了イベントを設定します: 'seq.setOnFinished(e - > logMessage(Mavis.LOG_INITIALIZE)); ' – MBec

+0

ありがとう、解決しました。 – NEWBIEHERE

関連する問題