Пятно 2d, Java, получатели и установщики анимации

Я пытаюсь разработать игру, и это все еще первые дни, но я столкнулся с проблемой.

Я создал класс персонажа и определил анимацию в этом классе, но хочу использовать его в другом классе, я создал метод получения анимации, но в классе, где я хочу его использовать, он просто возвращает ноль. Методы получения и установки отлично работают с целыми числами, но я не могу понять это, любая помощь будет оценена:)

Класс игрока

import org.newdawn.slick.Animation;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.SpriteSheet;
import org.newdawn.slick.state.StateBasedGame;

public class Player {

int x,y,dx,dy;
Animation currentAnim, DownWalk, LeftWalk;
SpriteSheet down;



public Player(int x, int y) throws SlickException{
    this.x = x;
    this.y = y;
    currentAnim = DownWalk;
}

public void init(GameContainer gc, StateBasedGame sbg) throws SlickException {

    down = new SpriteSheet("res/Character/DownWalkSpriteSheet",160,160);
    DownWalk = new Animation(down, 200);
    currentAnim = DownWalk;

}

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

public void render(GameContainer gc, StateBasedGame arg1, Graphics sbg)
        throws SlickException {
    currentAnim.draw(100,100);
}

public Animation getAnim(){
    return currentAnim;
}

public int getX(){
    return x;
}

public int getY(){
    return y;
}

}

Класс уровня (класс, в котором я хочу его использовать):

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.GameState;
import org.newdawn.slick.state.StateBasedGame;

public class Room1 extends BasicGameState {

Image Room1;
Player player;

public Room1(int state){
}

@Override
public void init(GameContainer gc, StateBasedGame sbg)
        throws SlickException {
    Room1 = new Image("res/Room1.png");
    player = new Player(300,300);
}

@Override
public void render(GameContainer gc, StateBasedGame arg1, Graphics sbg)
        throws SlickException {
    Room1.draw(0,0);

}

system.out.print - это то, как я проверил, что он возвращает ноль

@Override
public void update(GameContainer gc, StateBasedGame sbg, int delta)
        throws SlickException {
    System.out.println(player.getAnim());

}

@Override
public int getID() {
    // TODO Auto-generated method stub
    return 1;
}

}

1 ответ

Вы должны позвонить init Метод из класса Player. В противном случае вы все еще получаете null вместо созданного объекта анимации.

Я думаю, после создания объекта Player вы хотите вызвать метод init:

@Override
public void init(GameContainer gc, StateBasedGame sbg)
        throws SlickException {
    Room1 = new Image("res/Room1.png");
    player = new Player(300,300);
    player.init(...) // HERE add the init call
}
Другие вопросы по тегам