Установка разных изображений персонажей

1

im, создавая FlockBird Mock, его четырех игроков, поэтому каждый игрок имеет другое изображение, мне удалось установить изображение для первого, но я не могу настроить их для других.

У меня есть класс для птицы, где я устанавливаю первое изображение, и у меня есть основной класс, где я создал 3 других птиц, не знаю, где я изменяю изображения и как должен. Помощь была бы оценена.

 public Bird(int x, int y) {
        this.x = x;
        this.y = y;

        this.color = Color.red;
        this.radius = 30;

        this.gravity = 6;
        this.isAlive = true;
        this.score = 0;
        try {
            this.read = ImageIO.read(new File("src/Images/41.png"));
        } catch (IOException ex) {
            Logger.getLogger(PaintingPanel.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

public class FlappyBird extends TimerTask implements KeyListener{
    private Bird flappyA;
    private Bird flappyB;
    private Bird flappyC;
    private Bird flappyD;
  • 0
    В чем проблема?
  • 0
    Как я могу изменить изображение для других персонажей, потому что все они имеют одинаковое изображение
Теги:
image

2 ответа

0
Лучший ответ

Ну, учитывая, что путь к вашему изображению всегда один и тот же в этом коде.

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

public Bird(int x, int y, String imageName)
{
    this.x=x;
    this.y=y;

    this.color = Color.red;
    this.radius = 30;

    this.gravity = 6;
    this.isAlive = true;
    this.score = 0;
    try {
        this.read = ImageIO.read(new File("src/Images/" + imageName + ".png"));
    } catch (IOException ex) {
        Logger.getLogger(PaintingPanel.class.getName()).log(Level.SEVERE, null, ex);
    }
}

Тогда в вашем главном классе вы подталкивали бы flappy:

flappyA = new Bird(0, 0, "image0");
flappyB = new Bird(0, 0, "image1");
flappyC = new Bird(0, 0, "image2");

Изменение: папка "Изображения" должна находиться в корне проекта, "src" следует использовать только для исходных файлов кода.

  • 0
    Спасибо, куча человек!
  • 0
    Когда ОП строит свое приложение, этот код больше не будет работать. Папка src не будет существовать при сборке программы. Ресурсы, содержащиеся в контексте приложения (например, включенные в Jar приложений), должны загружаться по-разному.
0

Когда вы создадите приложение, каталог src больше не будет существовать, и вы больше не сможете получить доступ к ресурсам, встроенным в ваше приложение, как вы (или были), если они существуют в файловой системе, например

this.read = ImageIO.read(new File("src/Images/41.png"));

FileNotFoundException.

Чтобы загрузить встроенные ресурсы, вам нужно использовать Class#getResource или Class#getResourceAsStream, например...

this.read = ImageIO.read(getClass().getResource("/Images/41.png")));

Вместо hardcoding имя файла таким образом вы должны полагаться на переменную, чтобы сделать процесс более гибким...

String imageToBeLoaded = ...;
//...
this.read = ImageIO.read(getClass().getResource(imageToBeLoaded)));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню