所以我有一個程序使用JavaFX在屏幕上移動彈跳球,現在我試着在我的時間軸動畫的Duration.millis()下重新格式化某些值,並且越低球速度越快,但是,有人告訴我,是不是要代替我應該問的動態速度添加到我的程序,這裏是我爲我的球的移動代碼的最佳方式:如何讓彈跳球更快移動?動態速度?
public class BallPane extends Pane {
public final double radius = 5;
public double x = radius, y = radius;
public double dx = 1, dy = 1;
public Circle circle = new Circle(x, y, radius);
public Timeline animation;
public BallPane(){
circle.setFill(Color.BLACK); // Set ball color
getChildren().add(circle); // Place ball into Pane
// Create animation for moving the Ball
animation = new Timeline(
new KeyFrame(Duration.millis(10), e -> moveBall()));
animation.setCycleCount(Timeline.INDEFINITE);
animation.play();
}
public void moveBall() {
// Check Boundaries
if (x < radius || x > getWidth() - radius) {
dx *= -1; //change Ball direction
}
if (y < radius || y > getHeight() - radius) {
dy *= -1; //change Ball direction
}
x += dx;
y += dy;
circle.setCenterX(x);
circle.setCenterY(y);
} }
反過來,這將是一個乒乓球比賽所以我要有5個關卡,並且在每個關卡中,我都希望球移動得更快,我可以通過降低Duration.millis()來做到這一點,但我被告知這不是最好的方式,而是增加速度,我可能會如何去做這件事,而不降低我的時間線動畫參數Duration.millis?我應該添加另一個參數還是另一個速度方法?
您可以通過速度的因素相乘'dx'和'dy'。 – Oisin