gpt4 book ai didi

javafx动画循环

转载 作者:行者123 更新时间:2023-11-29 07:12:02 24 4
gpt4 key购买 nike

在c++或c编程语言中,我们知道改变坐标我们使用gotoxy(x,y),我们可以使用looping和sleep来改变坐标和制作动画。像这样;

for(x = 20; x < 25; x++){
gotoxy(x,20); cout << "*"
}

但我的问题是 JAVAFX 2.0 编程怎么样?我正在使用 netbeans 7.2。感谢您的帮助。

最佳答案

使用 JavaFX Animation Package .

JavaFX Animation Tutorial 中有很多例子,正如安迪在他的评论中指出的那样。

还有一个可爱的例子 running horse animation loop .

关键是您不会 hibernate JavaFX 应用程序线程,每次更新某些内容并希望呈现它时,您都必须将 JavaFX 线程的控制权释放回 JavaFX 系统。 JavaFX 动画类会为您处理这些事情,因此您不必担心。如果您只是像在问题的示例代码中那样循环,JavaFX 只会在循环完成后渲染一次场景,您永远不会看到任何事情发生。

这是一个相当无聊的例子,它使用了 Timeline模拟您问题中的 C++ 代码,每 400 毫秒将一个点移动一个像素。

import java.util.Date;
import javafx.animation.*;
import javafx.application.Application;
import javafx.event.*;
import javafx.scene.*;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;

/** Simple JavaFX Animation Sample. */
public class AnimationSample extends Application {
private int x = 20;
private String status = "";
private final Circle dot = new Circle(20, 20, 3);
private final TimeCounter counter = new TimeCounter();

public static void main(String[] args) throws Exception { launch(args); }
@Override public void start(final Stage stage) throws Exception {
final Timeline timeline = new Timeline(
new KeyFrame(Duration.ZERO, new EventHandler() {
@Override public void handle(Event event) {
refreshScene();
}
}),
new KeyFrame(Duration.millis(400))
);
timeline.setCycleCount(Timeline.INDEFINITE);

stage.setScene(new Scene(new Group(dot), 50, 50));
stage.show();

counter.reset();
timeline.play();
}

private void refreshScene() {
gotoxy(x, 20);

status = "*****".equals(status) ? "*" : status + "*";
System.out.println(String.format("%7d", counter.elapsed()) + " ms " + x + " " + status);

if (x == 24) {
x = 20;
} else {
x++;
}
}

private void gotoxy(int x, int y) {
dot.setCenterX(x);
dot.setCenterY(y);
}

class TimeCounter {
private long start = new Date().getTime();
void reset() { start = new Date().getTime(); }
long elapsed() { return new Date().getTime() - start; }
}
}

关于javafx动画循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13029920/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com