과제의 일부로 "젤다의 전설"을 재현하고 있습니다.Java 최적화 게임 배경 이미지 페인팅
다음과 같은 문제가 있습니다. 게임 세계는 플레이어의 현재 위치에 필요한 부분을 하위 이미지()로 지정하는 BufferedImage입니다. 게임은 작동하지만 CPU의 80/110 %를 사용합니다. 프로필에 따르면 범인은 이미지의 그림입니다.
그래서 플레이어, JPanel 등과 같은 JPanel에 배경을 넣었습니다. 서로 떨어져서 렌더링하고 (JLayeredPane) 배경 패널을 훨씬 덜 자주 다시 칠하십시오.
하지만 어떻게해야합니까? 한 번에 한 번 x 번, 다른 번으로 한 번 그립니다. 최적화 방법이 있다면 알려주세요.
는 여기이 순간에있어 무엇 :
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();
}
}
당신을 감사드립니다.
감사합니다. bi.getGraphics에 대한 귀하의 제안 덕분에 기사를 찾았습니다. 제 대답을 참조하십시오. 그리고 GTGE는 훌륭하게 들리지만 저는 경험을 위해 직접하고 있습니다. 어쨌든 그것의 임무. PS JCanvas는 Java의 일부가 아니므로 Canvas 또는 JCanvas 프로젝트를 의미합니까? – MrHus
GTGE는 이제 오픈 소스이며 내부 (http://code.google.com/p/gtge)에서 살펴 보았습니다. Java2D 게임을위한 효율적인 기법을 많이 배웠고 거기에 근접해 있습니다. 어쨌든 처음부터 그것을한다면 어쨌든 할 것입니다. 그리고 미안 해요, 나는 JCanvas (캔)보다는 Canvas를 의미했습니다. –