2013-11-10 3 views
1

У нас возникают проблемы с анимацией персонажа в игре java slick2d. Учебник, который я видел, показывает, как я это делал. Сейчас он показывает только 1-е изображение при движении влево или вправо. Он никогда не перемещается между двумя изображениями, установленными в walkLeft и walkRight.Проблема с анимацией спрайтов slick2d

import org.newdawn.slick.*; 
import org.newdawn.slick.state.*; 

public class Game extends BasicGameState { 

    Animation cowboy; 
    Animation movingLeft; 
    Animation movingRight; 
    Image background; 
    boolean quit = false; 
    int[] animationDuration = {200,200}; 
    float cowboyPositionX = 0; 
    float cowboyPositionY = -370; 
    float shiftX = cowboyPositionX + 200; 
    float shiftY = cowboyPositionY + 830; 

    public Game(int state) { 

    } 

    public void init(GameContainer gc, StateBasedGame sbg) 
      throws SlickException { 
     background = new Image("images/background.png"); 
     Image[] walkLeft = { new Image("images/cowboyleft1.png"), new Image("images/cowboyleft2.png") }; 
     Image[] walkRight = { new Image("images/cowboyright1.png"), new Image("images/cowboyright2.png") }; 
     movingLeft = new Animation(walkLeft, animationDuration, false); 
     movingRight = new Animation(walkRight, animationDuration, false); 
     cowboy = movingRight; 
    } 

    public void render(GameContainer gc, StateBasedGame sbg, Graphics g) 
      throws SlickException { 
     background.draw(cowboyPositionX, cowboyPositionY); 
     cowboy.draw(shiftX, shiftY); 
     g.drawString("Cowboy's X:" + cowboyPositionX + "\nCowboy's Y: " 
       + cowboyPositionY, 400, 20);  
    } 

    public void update(GameContainer gc, StateBasedGame sbg, int delta) 
      throws SlickException { 
     Input input = gc.getInput(); 
     if (input.isKeyDown(Input.KEY_LEFT)) { 
      cowboy = movingLeft; 
      cowboyPositionX += horizontalSpeed; 
      if (cowboyPositionX > 0) { 
       cowboyPositionX -= delta * horizontalSpeed; 
      } 
     } 
     if (input.isKeyDown(Input.KEY_RIGHT)) { 
      cowboy = movingRight; 
      cowboyPositionX -= horizontalSpeed; 
      if (cowboyPositionX < -2975.0) { 
       cowboyPositionX += delta * horizontalSpeed; 
      } 
     } 
    public int getID() { 
     return 1; 
    } 
} 

ответ

0

В вашем методе обновления попытайтесь вставить cowboy.update(delta);, который должен работать. Он работал над программой, над которой я работаю.

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