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

尝试将 repaint() 方法放在 while 循环中。在您的情况下,您在移动所有内容后重新粉刷您的僵尸。另一件事如果你在 move 方法中使用 Thread.sleep() 你应该让每个僵尸都在他自己的线程中。

希望有帮助,萨拉姆=)

于 2013-11-12T19:50:11.957 回答