내 게임의 Swing.Timer는 내 배경으로 가져올 이미지의 크기에 따라 작동합니다. 1920 x 1080 크기의 이미지를 가져 오면 타이머가 크게 느려지고 거의 업데이트되지 않지만 완벽한 품질입니다. 이미지 크기가 50 x 50으로 설정되면 타이머는 완벽하게 작동하지만 이미지 자체가 크게 왜곡됩니다. 이 문제를 자바에서 해결할 수있는 방법이 있습니까? 코드는 다음과 같습니다이미지 크기 타이머 문제 만들기
이미지로드 등급 :
public class BufferedImageLoader {
Image image;
public Image loadImage(String path) {
try {
image = ImageIO.read(this.getClass().getResource(path));
} catch (IOException e) {
e.printStackTrace();
}
return image;
}
}
가로드되는 이미지 나는 문제가 있습니다
public class ImageLoader {
BufferedImageLoader bif = new BufferedImageLoader();
public Image spaceship() {
return bif.loadImage("/objects/spaceship.png");
}
public Image background() {
return bif.loadImage("/objects/spaceBackground.png");
}
public Image asteroid1() {
return bif.loadImage("/objects/v.png");
}
public Image background2() {
return bif.loadImage("/Other/background.png");
}
}
코드 :
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
if(menu)
ms.render(g2);
if(game) {
g2.drawImage(il.background2(), 0, 0, 1000, 750, this);
g2.drawImage(il.spaceship(), dx, 600, 100, 100, this);
}
if(settings)
ss.render(g2);
if(credits)
cs.render(g2);
}
위원장이하여 ImageLoader입니다 객체 문제가 발생했을 때 알았습니다. w를 이해하지 못했습니다. 그것은 일어나고 있습니다 ...
편집 : 배경색 1000, 750 (이 크기는 내가 그린 것처럼)을 만들 때, 타이머는 1920 x 1080 이미지와 매우 유사합니다. 그리고 clunky.
이미지를로드하는 작업은 시간이 많이 소요됩니다. 한 번로드하고 사전 캐시해야합니다. 특히 'paintComponent' 메소드에서 계속로드하지 않아야합니다. – MadProgrammer
그래, 이미지를 미리로드하려고합니다. 그런 다음 paintComponent 메소드 내부에 페인트하면 장비가됩니다. ht. 편집 : 와우 그 모든 고정. 전에 내가 알아 내지 못했던 바보 같은 느낌. 정말 고맙습니다! – Shane
소프트웨어 개발의 멋진 세계에 오신 것을 환영합니다. 심지어 가장 밝은 사람도 정규 기지에서 바보 같이 느껴지기도합니다.) – MadProgrammer