Java FX 移动形状

Java FX moving shapes

我想问一下您对如何解决我的问题有什么想法吗?我想要实现的是将事物朝一个方向移动,但将生成实例保持在设置的 y 位置

public class Balony extends Canvas {
    Group root;
    GraphicsContext gc;
    Timeline t;
    Scene scene;
    int poz = 100;
    Color farba=Color.RED;
    Random rand = new Random();

    int rychlost= rand.nextInt(20 - 2 + 1) + 2;

    public Balony(Scene scene){
        super(800,1000);
        this.root = root;
        this.scene = scene;
        gc = this.getGraphicsContext2D();
        setLayoutY(100);
        t = new Timeline(new KeyFrame(Duration.millis(100),e->chod()));
        t.setCycleCount(Animation.INDEFINITE);
        t.play();


    }
    private void kresli(){
        farebnost();
        spawn();

            gc.setFill(farba);
            gc.fillOval(poz-40, scene.getHeight()-100, 80, 100);
            gc.setFill(Color.BLACK);
            gc.fillRect(poz, scene.getHeight(), 2, 100);

    }
    public void chod(){
        kresli();
        setLayoutY(getLayoutY()-rychlost);
    }
    public void spawn(){
        int miesto = rand.nextInt((int) (scene.getWidth() - 50 + 1)) + 50;
        poz = miesto;
    }
    public void farebnost(){
        int colour= rand.nextInt(10 - 1 + 1) + 1;
        switch (colour) {
            case 1: farba = Color.RED; break;
            case 2: farba = Color.GREEN; break;
            case 3: farba = Color.BLUE; break;
            case 4: farba = Color.YELLOW; break;
            case 5: farba = Color.ORANGE; break;
            case 6: farba = Color.BROWN; break;
            case 7: farba = Color.YELLOWGREEN; break;
            case 8: farba = Color.ORANGERED; break;
            case 9: farba = Color.HOTPINK; break;
            case 10: farba = Color.VIOLET; break;
        }
    }

这是我为解释我的问题而制作的一个简单程序,当新气球生成时,它们的 y 轴位置向上移动,但我想保持新实例向下移动 + 让它们以不同的速度向上移动(我相信这可以通过将整个移动过程移动到我的产卵空间来解决,所以这并不重要)。

  1. 您需要为单个气球引入一个 class 来存储它的位置、速度和颜色。我们称它为 Balon.
  2. 在 class Balony 中,您应该存储 List<Balon> balony;
  3. chod()方法的末尾,你应该遍历balony,并更新每个Balon的位置。 balon.setPoz(balon.getPoz() + balon.getRychlost());
  4. 其他方法(例如 kresli())必须相应更改,绘制气球列表,而不是单个气球