【发布时间】:2018-03-19 10:52:35
【问题描述】:
我正在尝试学习 JavaFX 动画的工作原理,因此我尝试根据以下教程创建一个地球绕圈运动的动画:https://gamedevelopment.tutsplus.com/tutorials/introduction-to-javafx-for-game-development--cms-23835。
出于某种原因,我想展示的场景设置在舞台上,但图形或动画却没有。我很确定这是微不足道的,我似乎找不到原因。这是我的主类代码:
public class Main extends Application {
private static Stage stage;
private static Window window;
private static Scene scWindow;
@Override
public void start(Stage primaryStage) {
stage = primaryStage;
stage.setTitle("Animation");
showWindow();
stage.show();
}
public static void showWindow() {
window = new Window();
scWindow = new Scene(window, 400, 400);
stage.setScene(scWindow);
}
public static void main(String[] args) {
launch(args);
}
}
这是Window类的代码:
public class Window extends BorderPane {
final long startNanoTime = System.nanoTime();
Image earth = new Image("http://icdn.pro/images/en/g/o/google-earth-icone-8927-128.png");
Image space = new Image("https://space-facts.com/wp-content/uploads/magellanic-clouds.png");
GraphicsContext gc;
public Window() {
Group root = new Group();
Canvas canvas = new Canvas(512, 512);
gc = canvas.getGraphicsContext2D();
root.getChildren().add(canvas);
gc.setFill(Color.BLACK);
Anim a = new Anim();
a.start();
}
private class Anim extends AnimationTimer {
public void handle(long currentNanoTime)
{
double t = (currentNanoTime - startNanoTime) / 1000000000.0;
double x = 232 + 128 * Math.cos(t);
double y = 232 + 128 * Math.sin(t);
gc.drawImage( space, 0, 0 );
gc.drawImage( earth, x, y );
}
}
}
没有抛出异常或任何东西,我不知道出了什么问题。
编辑: 我知道我没有在构造函数中的 setCenter/Left 等中放置任何东西,所以实际上如果是这个原因,我应该如何放置动画,例如在边框窗格的中心?
【问题讨论】: