0
私はスクロールバックグラウンドを作ろうとしています。希望はそれを末尾に接続することで同じ「リボン」を回転させ、私はゲームの後ろに配置します。JavaFXアニメーションスロー動画
私はこれをアニメーション化するための正しい方法を模索してきました。私は私の例やTimeLineのようにAnimationTimerを使うことができます。しかし、アニメーションの速度をずっと遅くしたいと思っています。タイマーの更新を遅らせると、動きが遅くなります。私はint変数を追加しましたが、 "x"ミリ秒未満であれば返りますが、それは良く見えませんでした。
このタスクを実行するより良い方法はありますか?ハンドルに追加しました
import javafx.animation.AnimationTimer;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
class ImageContainer extends VBox {
int w, h;
int sectionScrollWidth = 1;
int sections;
int sectionCounter = 0;
Image image;
Canvas canvas;
public ImageContainer() {
setVisible(true);
load();
w = (int) image.getWidth();
h = (int) image.getHeight();
canvas = new Canvas(w, h);
getChildren().add(canvas);
sections = w/sectionScrollWidth;
GraphicsContext gc = canvas.getGraphicsContext2D();
canvas.setVisible(true);
gc.drawImage(image, 0, 0, w, h);
setPrefSize(w, h);
final long startNanoTime = System.nanoTime();
new AnimationTimer() {
public void handle(long currentNanoTime) {
sectionCounter = sectionCounter - sectionScrollWidth;
canvas.setTranslateX(sectionCounter);
}
}.start();
// KeyValue kv1 = new KeyValue(canvas.translateXProperty(), 0);
// KeyValue kv2 = new KeyValue(canvas.translateXProperty(), 2000);
// KeyFrame kf1 = new KeyFrame(Duration.millis(3000), kv1, kv2);
// Timeline translate = new Timeline();
// translate.getKeyFrames().add(kf1);
// translate.play();
}
public void load() {
Path imagePath = Paths.get("./src/main/resources/ribbonImages/clouds.png");
File f = imagePath.toFile();
assert f.exists();
image = new Image(f.toURI().toString());
}
}