Я занимаюсь игрой в java, и моя проблема заключается в настройке фона. Я пробовал использовать g.drawImage()
, но, как его перекрашивает каждый раз, заставляйте fps падать много. Поэтому я исправил эту проблему fps, установив фон JLabel
и ImageIcon
. Но ярлык накладывает графику, как я могу это исправить?Графика наложения jlabel image Icon
public class GameScreen extends Screen implements Observer {
private static GameScreen gamescreen;
private Game game;
private JLabel label = new JLabel();
private ImageIcon icon = new ImageIcon("./res/img/bg1.png");
private GameScreen() {
setGame(Game.getInstance());
setLayout(null);
label.setIcon(icon);
label.setBounds(0, 0, 600, 600);
add(label);
}
public static GameScreen getInstance() {
if(getGameScreen() == null) {
setGameScreen(new GameScreen());
}
return getGameScreen();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
//PaintWorld
new DrawableWorld().draw(g, getWidth(), getHeight());
//Paint players
new DrawablePlayer().draw(g, getWidth(), getHeight(), getGame().getPlayers());
//Paint hud
new DrawableHud().draw(g, getWidth(), getGame().getPlayers());
}
@Override
public void update(Observable o, Object arg) {
repaint();
}
//getters & setters..
Пример:
PS: Все DrawableClasses расширяет экран, который расширяет JPanel
Try использовать [BackgroundPanel] (https://tips4java.wordpress.com/2008/10/12/background-panel/) – alex2410
Случается же, он накладывает графику :( – Frank