此代码包含可移动的吃豆人,按下空格键后会射出小椭圆。所以布尔变量默认为false。按下空格键后变为真,并绘制椭圆形。按下空格键后,也启动了新线程。该线程包含向前移动椭圆形的代码,一旦到达某些坐标,它就会消失。所以当我第一次按空格时,一切正常。实际上,经过多次后它也能正常工作,但 elclipse 不断抛出 IllegalThreadStateException。我决定将线程代码放入while(c!=22)
块中,因为当c = 21时球消失了,所以我认为线程将继续运行,因为无法满足条件。所以我的观点是每次按下空格按钮时都会使椭圆移动。这不是完整的代码。只是重要的部分。如果您需要完整的代码,请告诉我。谢谢!!
线:
thread=new Thread(){
public void run(){
while(c!=22){
try{
for (c=0;c<=20;c++){
newX=newX+c;
repaint=true;
Thread.sleep(100);
}
if(c==21){
shoot=false;
c=0;
}
}catch(InterruptedException v){System.out.println(v);}
}
}
};
油漆组件方法:
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)
newX=x+20;
newY=y+10;
if(shoot){
g.drawOval(newX,newY,10,10);
}
if(repaint)
repaint();
}
启动线程的关键事件:
if(e.getKeyCode()==KeyEvent.VK_SPACE){
shoot=true;
thread.start();
}