Я работаю над воссозданием «Легенды о Зельде, связывающей прошлое» как часть задания.
И у меня есть следующая проблема, игровой мир представляет собой BufferedImage, в котором я subImage () часть, которая мне нужна для текущего местоположения игрока. Игра работает, но использует 80/110 процентов процессора. Профиль показал, что виновником является рисунок изображения.
Итак, я решил поместить фон в отдельную JPanel от Player, врагов и т.д. JPanel.
Визуализируйте их друг над другом (JLayeredPane) и перекрашивайте фоновую панель гораздо реже.
Но как мне это сделать, как заставить свинг рисовать одну панель x раз в секунду, а другую y раз? Если у вас есть лучший способ оптимизации, дайте мне знать.
Вот что у меня есть на данный момент:
public class Main extends JFrame
{
private ZeldaGame game = new ZeldaGame();
private View view = new View(game);
private BackgroundView bckView = new BackgroundView(game);
private Controller ctl = new Controller(game, view, bckView, this);
public Main()
{
setLayout(null);
view.setBounds(0, 0, game.getWidth(), game.getHeight());
bckView.setBounds(0, 0, game.getWidth(), game.getHeight());
JLayeredPane pane = new JLayeredPane();
pane.add(bckView, 1);
pane.add(view, 0);
setLayeredPane(pane);
setSize(game.getWidth(), game.getHeight());
setResizable(false);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args)
{
new Main();
}
}
Спасибо.