使用javafx

时间:2019-04-20 14:37:45

标签: java canvas javafx

我正在用javafx完成Java中的A * Pathfinder。 我想做一个“动画”来追踪这条路。 目前,当我按下“搜索”按钮时,从开始到结束,这条路都是最好的路,然后,这条路就画了。

search.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        if (p.getStart() != null && p.getEnd() != null) {
            current = p.getStart();
            while (!doNext()) {}
            repaint();
        } else
            System.err.println("Start or end isn't define !");
});

我想一步一步地进行延迟(例如50ms)

我已经尝试做这样的事情

search.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        if (p.getStart() != null && p.getEnd() != null) {
            current = p.getStart();
            while (!doNext()) {
                Platform.runLater(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Thread.sleep(50);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        repaint();
                    }
                });
            }
        } else
            System.err.println("Start or end isn't define !");
    }
});

但是它不起作用,只是给repaint()添加了一个延迟,但是它已经完成了,道路将显示为完整(而不是逐步显示)。

0 个答案:

没有答案