2013-03-03 4 views
1

Извините, я могу попросить java перекрасить повторяющиеся вопросы, Я встречаюсь с проблемой, что я неоднократно использовал рисование, чтобы выразить Pacman Open & Закрыть движение рта. Но эта программа только один раз не будет двигаться ... Кто-нибудь может помочь мне решить эту проблему ... Очень большое спасибо!: DМогу ли я спросить, как повторно перерисовывать()?

Мой код, как показано ниже:

package Strive; 
import java.awt.*; 
import java.awt.geom.*; 
import javax.swing.*; 

class CDrawF extends JFrame { 
    CDrawF(){ 
     setTitle("繪製各式圖形");      //JFrame interface 
     setBounds(50, 50, 490, 260);  setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    public void paint(Graphics g) { 
     Graphics2D g2 = (Graphics2D) g; 
     for(int i = 0; i<= 360; i++){    //repeatly 360 times 
     repaint(); 
     g2.setColor(new Color(1.0f, 0.0f, 1.0f));    
     g2.fill(new Arc2D.Double(100, 100, 80, 80, 30, 300, Arc2D.PIE)); 
     //PacMan close mouth 
     repaint(); 
     try{   //Delay setions 
       Thread.sleep(1000); 
      }catch(InterruptedException ex){} 
     g2.fill(new Arc2D.Double(100, 100, 80, 80, 10, 340, Arc2D.PIE)); 
     //PacMan open mouth 
     repaint(); 
     } 
    } 
} 

public class NewClass {   //Main 
    public static void main(String[] args){ 
     new CDrawF(); 
    } 
} 
+0

возможно дубликат [Pacman открыть/закрыть рот анимации] (http://stackoverflow.com/questions/14426693/pacman-open-close-mouth-animation) – trashgod

ответ

9

Предложения:

  • не рисовать прямо в JFrame
  • не рисуйте в краске (...) метод.
  • Никогда не называйте Thread.sleep(...) на резьбе Качели событий
  • И уж тем более не называть его в paint(...) или paintComponent(...) метода.
  • Вместо рисовать в JPanel или JComponent в paintComponent (...) метод
  • Прочитайте графические учебники Java, как они будут объяснять все этого.
  • Не называть repaint() внутри краски (...) или paintComponent (...)
  • Используйте таймер поворота для цикла анимации. Снова учебники помогут вам в этом.
+5

Для [пример] (HTTP: // StackOverflow .com/а/14437899/230513). – trashgod

+4

И, например, посмотрите [эту ссылку] (http://stackoverflow.com/a/9986368/522444) и [это] (http://stackoverflow.com/a/4702819/522444), и [это ] (http://stackoverflow.com/a/12545773/522444). –

+1

+1 ... Lol Я борюсь с собой, чтобы не добавлять больше собственных моих собственных: P –

Смежные вопросы