Java로 프로그래밍중인 게임에 문제가 있습니다. 여기에 코드가 있습니다.Java에서 이미지 깜박임
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class Game extends JFrame {
private static final long serialVersionUID = 1L;
Graphics dbg;
Image dbImage;
static Image block;
static Block block1 = new Block();
static Image player1;
static Player player = new Player(193, 143);
public Game() {
Image playerIcon = new ImageIcon("res/play.png").getImage();
setSize(500, 400);
setTitle("Game");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setIconImage(playerIcon);
setLocationRelativeTo(null);
setVisible(true);
addKeyListener(new InputHandler());
setBackground(Color.BLACK);
setResizable(false);
}
public static void main(String[] args) {
new Game();
Thread p = new Thread(player);
p.start();
}
@SuppressWarnings("static-access")
public void paint(Graphics g) {
try {
dbImage = ImageIO.read(new File("res/background.png"));
} catch (Exception e) {
e.printStackTrace();
}
try {
player1 = ImageIO.read(new File("res/play.png"));
} catch (Exception e) {
e.printStackTrace();
}
try {
block = ImageIO.read(new File("res/grass.png"));
} catch (Exception e) {
e.printStackTrace();
}
dbg = dbImage.getGraphics();
draw(dbg);
g.drawImage(dbImage, 0, 0, this);
g.drawImage(player1, player.x, player.y, this);
g.drawImage(block, block1.x, block1.y, this);
}
public void draw(Graphics g) {
repaint();
}
}
이미지를 추가 한 곳이기 때문에이 클래스 만 추가했습니다. 다른 클래스를 보려면 댓글을 달아주세요. 문제는 이미지 player1과 블록이 깜박입니다.
'Game' 생성자에서'setDoubleBuffered (true)'를 추가 해보십시오. – Zong
@ZongZhengLi 스윙의 모든 것이 기본적으로 이중 버퍼링 된 것으로 생각했습니다. S – Cruncher
@Cruncher 그래픽 컨텍스트에 직접 그릴 때 그 라인이 필요하다고 생각합니다. – Zong