0

Java.problemは、新しい要素の再描画の追加を開始すると、タイマーが動作している間、要素が最後に移動している間、毎回一時的に停止します。いくつかのコード:

public void paintComponent(Graphics g)
{
   g = (Graphics2D) g;

   g.drawImage(img1, 0, 0,null);
   Iterator<zombie> it = zombies.iterator();
   while(it.hasNext())
   {
      if(it.next().heals <= 0)
      {
         it.remove();
      }
      else{
         g.drawImage(it.next().img  ,it.next().x , it.next().y , null);
      }
   }
}

public void actionPerformed(ActionEvent e)
{
   Iterator<zombie> it = zombies.iterator();
   while(it.hasNext())
   {
      it.next().move();
   }
   repaint();
}

これは、新しいアイテムを生成する新しいスレッドです:

public void run()
{
   Random rd = new Random();
   while(true)
   {    
      try {
         Thread.sleep(1000 + rd.nextInt(2000));

         if(rd.nextInt(4) == 1)
         {
            zombies.add(new ZombieLow(1000,rd.nextInt(500),1,20,300));
         }
         else
         {
            zombies.add(new ZombieHard(1000,rd.nextInt(500),1,15,700));
         }  
      } 
      catch (InterruptedException e) {
         e.printStackTrace();
      }
   }
}

その問題は何ですか?さらに情報が必要な場合は、私が提供しますと言ってください。

4

1 に答える 1

0

while ループに repaint() メソッドを入れてみてください。あなたの場合、すべてを移動した後にゾンビを再描画します。別のことは、move メソッドで Thread.sleep() を使用する場合、すべてのゾンビを独自のスレッドで作成する必要があります。

役に立てば幸いです、Salam =)

于 2013-11-12T19:50:11.957 に答える