这只是我的代码的一部分,如果你们需要完整的代码,请告诉我。所以我的问题是,这部分if(shoot) thread.start();
实际上不能像我希望的那样工作。使用 KeyListener 布尔变量拍摄在按下后变为真空格键。如果我使用thread.start()
一切正常,但我不想在程序启动时启动线程,而是在按下空格键后(变量拍摄变为真)。谢谢你的建议!
public void paintComponent(Graphics g){
super.paintComponent(g);
i=new ImageIcon("C:\\Users\\Jakub\\Desktop\\pm.gif");
pacman=i.getImage();
g.drawImage(pacman,x,y,this);
if(shoot){
g.drawOval(newX+20,y+10,10,10);
}
if(repaint)
repaint();
}
public static void main(String args[]){
Buffer z= new Buffer();
z.setBackground(Color.cyan);
frame=new JFrame();
frame.setSize(500,500);
frame.add(z);
frame.addKeyListener(z);
frame.setVisible(true);
thread=new Thread(){
public void run(){
try{
for (int i=0;i<=20;i++){
newX=newX+i;
repaint=true;
Thread.sleep(100);
}
}catch(InterruptedException v){System.out.println(v);}
}
};
if(shoot)
thread.start();
}
if(e.getKeyCode()==KeyEvent.VK_SPACE){
shoot=true;
}