2013-05-22 5 views
0

Я пытаюсь разработать игру, и все еще рано, но я столкнулся с проблемой.slick 2d, Java, Анимационные геттеры и сеттеры

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

класс игрока

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; 
} 

}

ответ

0

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

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

@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 
} 
+0

это сработало! Спасибо! – user2409854

+0

Если это сработало, вы можете пометить ответ как решение и закрыть вопрос. – Prine

Смежные вопросы