私はJavaFXで単純な宇宙船ゲームを作っています。私はクラスSpaceShipを持っていて、私はこのクラスのランダムなオブジェクトをランダムな開始位置(例えば5秒間隔)でメインゲームループに入れたいと思っています。タスクのためにTimer schedule()メソッドを使用しようとしています。問題は、私が宇宙船の鮮明な画像を得ることができないということです。絶え間なくループしているので、それは消えて、他のポイントに現れます。誰かがこれをどう扱うべきかアドバイスをしてくれますか?AnimationTimerループでオブジェクトジェネレータを作成する方法JavaFX
マイゲームループ:
new AnimationTimer() {
@Override
public void handle(long currentNanoTime) {
double t = (currentNanoTime - startNanoTime)/1000000000.0;
double xMoving = ((100 * t) % (canvas.getWidth() + 100));
double x = 232 + 128 * Math.cos(t);
double y = 232 + 128 * Math.sin(t);
//background image clears canvas
gc.drawImage(space, 0, 0);
gc.drawImage(earth, x, y);
gc.drawImage(sun, 196, 196);
// draw UFO
gc.drawImage(ufo.getFrame(t), 100, 25);
//draw spaceShip
SpaceShip.generate(new SpaceShip(spaceShipImageArr, 0.100, gc, t, xMoving - 100, (randomNum + 150)));
//timer schedule
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
SpaceShip.generate(new SpaceShip(spaceShipImageArr, 0.100, gc, t, xMoving - 100, (randomNum + 230)));
}
}, 5000);
}
}.start();
宇宙船クラス:
package objectClasses;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
public class SpaceShip{
private final GraphicsContext gc;
private final double frame;
private final double y;
private final double x;
private AnimatedImage object;
public SpaceShip(Image[] arr, double duration, GraphicsContext gc, double frame, double x, double y) {
object = new AnimatedImage();
this.object.frames = arr;
this.object.duration = duration;
this.gc = gc;
this.frame = frame;
this.y = y;
this.x = x;
}
private void drawShip() {
this.gc.drawImage(this.object.getFrame(frame), x, y);
}
public static void generate(SpaceShip spaceShip) {
spaceShip.drawShip();
}
}
SpaceShipインスタンスをリストまたは他のコレクションに格納していますか?問題のコードを表示していない場合は、お手伝いできません。 [MVCE](http://stackoverflow.com/help/mcve)が最適でしょう。 – Dth