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です。
私はstartupAnimationの後、logMessage(Mavis.LOG_INITIALIZE)の前に遅延が必要です。 – NEWBIEHERE
その後、 'SequentialTransition'の最後に別の' PauseTransition'を追加してください。次の終了イベントを設定します: 'seq.setOnFinished(e - > logMessage(Mavis.LOG_INITIALIZE)); ' – MBec
ありがとう、解決しました。 – NEWBIEHERE