Java awt repaint()不调用更新(图形g)
我一直在遵循“Kilobolt游戏开发”的教程: 我现在遇到的问题是,我有一个update()方法,根据教程和java文档,当我调用repain()时应该调用它,但是它不是,这使得框架根本不呈现任何内容 以下是相关代码:Java awt repaint()不调用更新(图形g),java,graphics,awt,Java,Graphics,Awt,我一直在遵循“Kilobolt游戏开发”的教程: 我现在遇到的问题是,我有一个update()方法,根据教程和java文档,当我调用repain()时应该调用它,但是它不是,这使得框架根本不呈现任何内容 以下是相关代码: @Override public void run() { // TODO Auto-generated method stub while(true){ ball.update(); playerpaddle.update()
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
ball.update();
playerpaddle.update();
computerpaddle.update();
repaint();
//System.out.println("s!");
try {
Thread.sleep(10);
} catch (Exception e) {
// TODO: handle exception
System.out.println("Error " + e.getMessage());
}
}
}
@Override
public void update(Graphics g) {
// TODO Auto-generated method stub
System.out.println("update");
if(background == null){
background = createImage(this.getWidth(), this.getHeight());
second = background.getGraphics();
}
second.setColor(getBackground());
second.fillRect(0, 0, getWidth(), getHeight());
second.setColor(getForeground());
paint(second);
g.drawImage(background, 0, 0, this);
}
@Override
public void paint(Graphics g) {
// TODO Auto-generated method stub
System.out.println("paint");
g.drawImage(iball, ball.getXPos(), ball.getYPos(), this);
g.drawImage(iplayerpaddle, playerpaddle.getXPos(), playerpaddle.getYPos(), this);
g.drawImage(icomputerpaddle, computerpaddle.getXPos(), computerpaddle.getYPos(), this);
}
编辑:
根据那个教程,我现在已经是第四天了,除了框架代码之外,一切都是一样的,因为keylistener不能正常工作,所以我不得不更改框架代码
Frame game = (Frame)this.getParent().getParent();
game.setSize(Constants.MAX_WIDTH, Constants.MAX_HEIGHT);
game.setBackground(Color.BLACK);
game.setFocusable(true);
game.addKeyListener(this);
game.setTitle("Pong Clone");
我也尝试过用update(this.getGraphics())直接调用update(),但是我仍然得到一个白色的框架,即使在调用update()和paint()之后,它也不会改变
编辑2:
我已经修复了错误读取线程函数的背景问题,并将我的“gameloop.run()”切换为“gameloop.start()”,这允许我渲染黑色背景,但我的球和桨仍然无法渲染