これが私のコードの一部です。コード全体が必要な場合はお知らせください。したがって、私の問題は、この部分if(shoot) thread.start();
が実際には機能しないことです。スペースキーを使用するとthread.start()
、すべてが正常に機能しますが、プログラムの起動時にスレッドを開始したくありませんが、スペースボタンを押した後 (変数シュートが true になった後) 提案していただきありがとうございます!
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;
}