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;
Ну, учитывая, что путь к вашему изображению всегда один и тот же в этом коде.
Я не уверен, что понимаю, в чем проблема, но если все, что вы хотите, должно иметь другое изображение для каждого игрока, вы должны попробовать:
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" следует использовать только для исходных файлов кода.
src
не будет существовать при сборке программы. Ресурсы, содержащиеся в контексте приложения (например, включенные в Jar приложений), должны загружаться по-разному.
Когда вы создадите приложение, каталог 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)));