首页 > 解决方案 > JavaFX:无法动态将 ImageViews 添加到锚窗格

问题描述

我的程序是一个游戏,它要求精灵每 2 秒生成一次。以下是我到目前为止的代码:


    @Override
    public void run() {

        try {
            spawnSprite(300, 300, true);
        } catch(NullPointerException e){
            e.printStackTrace();
            System.exit(0);
        }
    }
    private void spawnSprite(float x, float y, Boolean isPea){

        String url;
        if(isPea)
            url = "/Assets/Pea.png";
        else
            url = "/Assets/Not_pea.png";

        Image image = new Image(getClass().getResourceAsStream(url));
        ImageView Im = new ImageView();
        Im.setImage(image);
        Im.setX(x);
        Im.setY(y);
        AP.getChildren().add(Im);
    }

    @Override
    public void initialize(URL url, ResourceBundle resourceBundle) {   
        spawnSprite( 300, 300, true);
        Timer SpawnTimer = new Timer();
        TimerTask task= new Map_Controller();
        SpawnTimer.scheduleAtFixedRate(task, 1000L,2000L);
    }
}

然而AP,getChildren.add(Im)spawnSprite()抛出一个 NullPointerException。我确实发现如果我从initialize().

任何建议都会非常有帮助,谢谢!

标签: javafxtimersprite

解决方案


推荐阅读