내가 가진이 작동 코드로 작동하지 않습니다타임 라인은 '일부'기간이
Duration duration = Duration.millis(1000/30.0);
videoTick = new Timeline(new KeyFrame(duration, new EventHandler<ActionEvent>() {
public void handle(ActionEvent actionEvent) {
System.out.println("tick");
}
}));
videoTick.setCycleCount(Animation.INDEFINITE);
videoTick.playFromStart();
을 완벽하게. 그러나 일단 약간의 시간을 변경하면 :
Duration duration = Duration.millis(1000/30.1);
더 이상 작동하지 않습니다! 제 정신이 아니거나 JavaFx가 완전히 고장 났습니까? 어떻게 해결할 수 있을까요?
편집 :이 버그는 아무 의미가없는 것처럼 보이지만 방금 내 앞에 일어났습니다. 그것을 재현 할 수있는 최소한의 코드를 제공했습니다.
import javafx.animation.*;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.util.Duration;
import javafx.stage.Stage;
public class Ticker extends Application {
private Timeline videoTick;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(final Stage primaryStage) {
Duration duration = Duration.millis(1000/30.0);
videoTick = new Timeline(new KeyFrame(duration, new EventHandler<ActionEvent>() {
public void handle(ActionEvent actionEvent) {
System.out.println("Tick");
}
}));
videoTick.setCycleCount(Animation.INDEFINITE);
videoTick.playFromStart();
}
}
그런 다음
30.0
30.1
에 변경합니다.
편집 2 : 좋아, 여기에 (부분) 해결 방법은 다음과 같습니다 (EDIT 4 :.. 죄송합니다, 이것은 분명 내가 너무 피곤 해요 작동하지 않습니다) : 정말 Timeline#play()
작품 Timeline#playFromStart()
하지 않습니다.playFromStart
을 무엇을해야하는 경우
그러나 문제가 해결되지 않는 이유는 무엇입니까? 더 중요한 것은 1000/30.1
과 함께 작동하지 않는 이유는 무엇입니까?
EDIT 3는 :
나는 + 자바/자바 FX 1.7.0_17 자바/자바 FX 1.7.0_21 OSX 10.8에 재현.
무엇이 작동하지 않습니까? 예외 또는 오류가 발생 했습니까? – Vulcan
이전 코드에서 Java는 "tick", "tick", "tick"...을 나중에 인쇄하지만 아무 일도 일어나지 않습니다. –
@jewelsea 7b17을 사용하고 있습니다. 업그레이드하고 테스트 해 보겠습니다. –