libgdx и движения - PullRequest
       18

libgdx и движения

0 голосов
/ 08 марта 2012

Я хочу создать какую-нибудь игру, но у меня проблема. Я хочу нарисовать два изображения. Я использовал Texture и SpriteBatch, чтобы нарисовать два изображения. Но сейчас я хочу реализовать некоторые действия. Я хочу создать messege для пользователя. Если он нажимает на первое изображение, он получает сообщение: ваш выбор - изображение1. И для другого изображения алгоритм такой же.

public void create() {
    background = new Texture(Gdx.files.internal("backg.png"));
    polishFlag = new Texture(Gdx.files.internal("german.png"));
    englishFlag = new Texture(Gdx.files.internal("english.png"));
    batch = new SpriteBatch();
}
public void render() {
    batch.begin();
    batch.draw(background, 0, 0, 480, 320);
    batch.draw(germanFlag, 140,80, 90, 60);
    batch.draw(englishFlag, 260,80, 90, 60);
    batch.end();
}

Как я могу реализовать эту функцию? Я хочу, чтобы это решение работало на платформе Android. Некоторые идеи?

1 Ответ

1 голос
/ 09 марта 2012

Посмотрите на интерфейс InputProcessor. (В качестве альтернативы используйте класс InputMultiplexer).

Используя InputProcessor, вы можете сделать что-то вроде:

public class YourGame implements InputProcessor{
      com.badlogic.gdx.math.Rectangle touchBounds;
      string message ;
      BitmapFont font;

      //lots of input processor methods
      @Override
      public boolean onTouchDown(x, y, int button){
          tocuhBounds.x = 140;
          if (rectangle.contains(x,y))
               message = "your choice is picture1";
          else{
              touchBounds.x = 260;
              if (rectangle.contains(x,y))
                message = "your choice is picture2";
          }
      }

      public void create() {
             background = new Texture(Gdx.files.internal("backg.png"));
             polishFlag = new Texture(Gdx.files.internal("german.png"));
             englishFlag = new Texture(Gdx.files.internal("english.png"));
             batch = new SpriteBatch();
             touchBounds = new Rectangle();
             touchBounds.width = 90;
             touchBounds.height = 60;
             touchBounds.y = 80;
             font = new BitmapFont();
      }

      public void render() {
          batch.begin();
          batch.draw(background, 0, 0, 480, 320);
          batch.draw(germanFlag, 140,80, 90, 60);
          batch.draw(englishFlag, 260,80, 90, 60);
          font.draw(batch, message, 10, 10);
          batch.end();
     }

}
...