Я создаю игру-лабиринт, в которой будет несколько «преследователей», следующих за игроком вокруг лабиринта, для этого мне нужно переместить охотников, однако я столкнулся с проблемой, используя .relocate (), он только перемещаетсяэто когда-то, я понимаю, это делает это, потому что это смещает всю ось координат, а не только координаты узлов.
К сожалению, я не могу использовать chaser.setCentreX () для его перемещения, так как я буду динамически создавать узлы и у всех будет одно и то же имя 'chaser', поэтому я использую getChildren () для получения координат. Чтобы различать несколько охотников, я буду использовать .setId () .getId (), чтобы я мог получить доступ к LayoutBounds определенного узла. Например, если бы было три преследователя, первый из них назывался бы 'chaser' с Id = 1, затем следующий с и Id = 2 и т. Д.
Есть ли альтернативный способ перемещения узла без этоговыдавать? код ниже демонстрирует проблему.
package sample;
import javafx.animation.KeyFrame;
import javafx.animation.Timeline;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Pane pane=new Pane();
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(pane, 600, 600));
primaryStage.show();
Circle chaser=new Circle();
chaser.setRadius(12);
chaser.setCenterX(100);
chaser.setCenterY(50);
chaser.setFill(Color.YELLOW);
pane.getChildren().add(chaser);
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(30), new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("running");
pane.getChildren().get(0).relocate(chaser.getCenterX()+400,chaser.getCenterY());
}
}));
timeline.setCycleCount(Timeline.INDEFINITE);
timeline.play();
}
public static void main(String[] args) {
launch(args);
}
}