Я делаю java-игру, используя Eclipse. Когда я экспортирую в исполняемую банку и пытаюсь запустить игру на другом компьютере, изображения не видны. После проверки переполнения веб-страниц и стека для подобных проблем, я думаю, что это имеет какое-то отношение к моему использованию ImageIcon
вместо ImageIO
. Однако я не уверен, как изменить свой код, чтобы загружать изображения с ImageIO
вместо ImageIcon
.Замена ImageIcon с ImageIO для загрузки изображений
Вот метод, который использует ImageIcon
для загрузки изображений
void loadImage() {
ImageIcon earth_image_icon = new ImageIcon("earth2.png");
earth = earth_image_icon.getImage();
ImageIcon sun_image_icon = new ImageIcon("sun2.png");
sun = sun_image_icon.getImage();
ImageIcon asteroid_image_icon = new ImageIcon("asteroid.png");
asteroid = asteroid_image_icon.getImage();
ImageIcon bg_image_icon = new ImageIcon("bg_pr.png");
background = bg_image_icon.getImage();
ImageIcon shipA_image_icon = new ImageIcon("ship_alpha.png");
ship_on_asteroid = shipA_image_icon.getImage();
ImageIcon ship_image_icon = new ImageIcon("ship_beta.png");
ship_no_thrust = ship_image_icon.getImage();
ImageIcon shipL_image_icon = new ImageIcon("ship_betaL.png");
ship_left_thrust = shipL_image_icon.getImage();
ImageIcon shipR_image_icon = new ImageIcon("ship_betaR.png");
ship_right_thrust = shipR_image_icon.getImage();
ImageIcon shipU_image_icon = new ImageIcon("ship_betaU.png");
ship_up_thrust = shipU_image_icon.getImage();
ImageIcon shipD_image_icon = new ImageIcon("ship_betaD.png");
ship_down_thrust = shipD_image_icon.getImage();
ImageIcon leftarrow_image_icon = new ImageIcon("leftarrow.png");
leftarrow = leftarrow_image_icon.getImage();
ImageIcon rightarrow_image_icon = new ImageIcon("rightarrow.png");
rightarrow = rightarrow_image_icon.getImage();
ImageIcon downarrow_image_icon = new ImageIcon("downarrow.png");
downarrow = downarrow_image_icon.getImage();
ImageIcon uparrow_image_icon = new ImageIcon("uparrow.png");
uparrow = uparrow_image_icon.getImage();
}
А вот один из методов, которые рисует изображение на JPanel в качестве примера
void drawEarth(Graphics g) {
g.drawImage(earth, earth_x_coordinate, earth_y_coordinate, this);
Toolkit.getDefaultToolkit().sync();
}
Как конвертировать к использованию ImageIO
? Я проверил документацию Oracle, но я теряюсь, пытаясь разобраться в этом, и я очень новичок в программировании и Java.
Update Было предложено, чтобы this может быть решение моей особой проблемой, но я попытался ответы, приведенные на этом посту, и они не работали для моего случая.
Где хранятся изображения, связанные с источником? – MadProgrammer
Изображения сохраняются в папке проекта, а не в исходной папке. Однако я попытался сохранить изображения в исходной папке, а также поместить изображения в папку ресурса и добавить эту папку в путь сборки. – abaxtastic
Если изображения хранятся в папке проекта, вам необходимо убедиться, что они включены вместе с банками и находятся в контексте контекста выполнения (поскольку путь поиска будет относительным с этой точки). Если они включены в «jar» (в комплекте/вложенные), вам нужно будет использовать что-то вроде 'getClass(). GetResource (" ... ")' для их загрузки. В этом случае путь должен быть абсолютным путем к изображениям из корня исходного каталога (исключая папку 'src'). – MadProgrammer