渲染更高质量的纹理时程序中断

时间:2019-07-19 19:09:01

标签: java

我正在尝试用Java制作Super Mario Bros平台游戏进行练习,当我加载程序时,屏幕上的所有纹理开始闪烁,并且控制台因错误而疯狂。 This is what it looks like(它是一张图片,所以您看不到闪烁的光。)

现在是关键,当我加载比那些砖块(仅是黑色或蓝色等纯色)更简单的纹理时,闪烁停止。同样,减少我一次在屏幕上显示的块数量也可以停止闪烁/错误。

public class Level 
{

    public Block[][] level;
    int blockDim;
    private Component component;

    public Level(String path, Component component)
    {
        this.component = component;
        blockDim = component.width/30;

        loadLevelFromImage(ImageLoader.loadImage(path));
    }

    public void loadLevelFromImage(BufferedImage image)
    {
        level = new Block[15][15];

        for(int x = 0; x < level.length; x++)
            for(int y = 0; y < level[x].length; y++)
                level[x][y] = new FloorBlock(x * blockDim, y * blockDim, blockDim, blockDim);

    }

    ArrayList<Entity> entities = new ArrayList<Entity>();

    public void update()
    {
        entities.clear();
        for(int x = 0; x < level.length; x++)
            for(int y = 0; y < level[x].length; y++)
                entities.add(new FloorBlock(x * blockDim, y * blockDim, blockDim, blockDim));
    }

    public void render(Graphics g)
    {
        for(int i = 0; i < entities.size(); i++)
                entities.get(i).render(g);
    }

}

我的程序使用

每秒循环执行Update和render方法60次
game.update();
game.repaint();

(其中Game是一个JPanel,只是具有自己的update和paintComponent方法,可在其中调用level.update和level.render)

这也是它给我的错误,没有多大意义,因为它仅在纹理详细且丰富时才出现,如屏幕截图所示)

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at main.Level.render(Level.java:52)
    at main.Game.paintComponent(Game.java:27)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintToOffscreen(Unknown Source)

0 个答案:

没有答案