Java Spirte是在背景下绘制的

Java Spirte是在背景下绘制的,java,slick2d,Java,Slick2d,我正在用Slick2D开发一个StateBasedGame(只是为了学习),我遇到了一个问题 walkingRight.draw(0,250); 此动画在背景精灵下绘制。我不知道如何让它在上面。我一点也看不见 完整代码: package gamelogic; import org.lwjgl.input.Mouse; import org.newdawn.slick.*; import org.newdawn.slick.gui.MouseOverArea; import org.n

我正在用Slick2D开发一个StateBasedGame(只是为了学习),我遇到了一个问题

walkingRight.draw(0,250);
此动画在背景精灵下绘制。我不知道如何让它在上面。我一点也看不见

完整代码:

    package gamelogic;

import org.lwjgl.input.Mouse;
import org.newdawn.slick.*;
import org.newdawn.slick.gui.MouseOverArea;
import org.newdawn.slick.state.*;

public class Level extends BasicGameState {

    // INITIATE IMAGES
    public Image background;
    public Image title;
    public Image playButton;
    public Image exitButton;

    public Animation walkingRight;
    public Animation playerIdle;
    public int[] duration = {200, 200, 200, 200, 200};
    public int durationIdle[] = {200, 200}; 


    // INITIATE VARIABLES FOR TITLE'S POSITION
    public float menuPosX;
    public float menuPosY;

    public Player player;

    // __CONSTRUCTOR
    public Level(int state) {

    }

    public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {
        background = new Image("res/levelbg.png");
        Image[] walkRight = { new Image("res/player/snap0.png"), new Image("res/player/snap1.png"),
                new Image("res/player/snap2.png"), new Image("res/player/snap3.png"), new Image("res/player/snap4.png")};
            Image idle[] = { new Image("res/player/snap0.png"), new Image("res/player/snap1.png")};

            this.walkingRight = new Animation(walkRight, this.duration, false);
            this.playerIdle = new Animation(idle, this.durationIdle, false);        

    }

    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException {
        background.draw(0,0);
        playerIdle.draw(0,0);
    }

    public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException {
        Input input = gc.getInput();

            walkingRight.draw(0,250);

    }   

    public int getID() {
            return 1;
        }   
    }

你们能帮我一下吗?

好的,我找到了解决办法。不应在update()函数中绘制动画,而应仅在render()函数中以变量作为坐标绘制动画一次。在update()函数中,您将更改坐标,只需为动画变量指定一个不同的动画。

这是由于渲染的顺序。渲染前会调用更新,因此会绘制动画,渲染时会在动画顶部绘制背景,播放器空闲时会在背景顶部绘制。经过数小时的尝试和错误,我自己发现了这一点,但我很感谢您的评论,它稍微澄清了我的想法。非常感谢:)。