私は単純な2Dゲームを開発しようとしていて、アニメーションのために私はTimerとTimerTaskを使っています。なぜそんなに遅くなるのですか?
しかし、24000×1600サイズと30MBのpngファイルである背景画像の再描画を呼び出すときだけ遅く描画されます。そして、私が他の再塗装をしたときは大丈夫でした。
私は大きすぎるイメージを描画するので、それですか?
私は24000 X 1600,130KB pngファイルで試しましたが、まだそれほど遅く描かれています。問題は何ですか?
ああ、また、コンテナ内にあるJPanelに描画しようとしています。
はここ
public void setIcon() {
try {
imgBackground = ImageIO.read(new File("./Images/Background/Background_1.png"));
imgBackground = convertToARGB(imgBackground);
} catch (Exception e) {
System.out.println(e.toString());
}
}
public static BufferedImage convertToARGB(BufferedImage image) {
BufferedImage newImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g = newImage.createGraphics();
g.drawImage(image, 0, 0, null);
g.dispose();
return newImage;
}
public void drawBackground() {
if (backgroundX >= -25900) {
buffg.drawImage(imgBackground, backgroundX, 0, null);
if (gameState) {
if (keyRight) {
backgroundX -= 3;
} else {
backgroundX -= 2;
}
}
}
if (background2X >= -25900) {
buffg.drawImage(imgBackground, background2X, 0, null);
if (gameState) {
if (keyRight) {
background2X -= 3;
} else {
background2X -= 2;
}
}
}
if ((backgroundX <= -22000) && (background2X <= -25900))
background2X = fWidth;
if ((background2X <= -22000) && (backgroundX <= -25900))
backgroundX = fWidth;
}
public void start(){
Timer timer = new Timer();
timer.schedule(timerTask, 50, 10);
}
TimerTask timerTask = new TimerTask() {
@Override
public void run() {
playerMoveProcess();
getContentPane().repaint();
getContentPane().revalidate();
}
};
https://stackoverflow.com/help/mcveをお読みください。 –