2014-05-06 45 views
-1

我想了解如何使用某種基本動畫。我可以使用線程,但是我被多人告知不要在java中使用多線程。我想我冷做類似的事情:使用計時器的動畫?

Timer t = new Timer(10, somthing); 
t.start(); 
x++; 
t.end(); 

這是我對它的基本理解。有人可以鏈接教程或解釋如何讓時間每10秒鐘或更長時間做一些事情嗎?

回答

0

首先,你爲什麼不告訴多線程?這似乎是現代計算機的一個非常有限的規則。

看起來好像你想安排一個任務以給定的速度開火。你應該看看Timer#schedule()。它允許你傳遞一個任務,以及一些配置來完成這個任務。

public class TimerDemo { 
    public static void main(String[] args) { 
      // creating timer task, timer 
      TimerTask tasknew = new TimerSchedulePeriod(); 
      Timer timer = new Timer(); 

      // scheduling the task at interval 
      timer.schedule(tasknew, 0, 10);  
    } 

    // this method performs the task 
    public void run() { 
     System.out.println("timer working");  
    }  
} 

源代碼:http://www.tutorialspoint.com/java/util/timer_schedule_period.htm

0

如果你想使用擺動計時器,也可以使一個是這樣的:

Timer timer = new Timer(); 
//delayed timer 
    timer.schedule(new TimerTask() { 

    @Override 
    public void run() { 
     //do your code after a delay (delayInMillis) 
    } 
    }, delayInMillis); 

//repeating timer 

timer.scheduleAtFixedRate(new TimerTask() { 

    @Override 
    public void run() { 
     //do your code every repeatTimeInMillis 
    } 
    }, 0, repeatTimeInMillis; 

我對動畫的建議是建立一個整數,其中你隨着定時器而改變。當您繪製動畫時,如果int是特定變量,則可以繪製特定圖像。 (使用if-else語句statemtents或switch語句)

我希望我幫助:d

0

「不以Java多線程」 不健全的權利。建議可能適用於Swing,並運行您的應用程序/在Event Dispatch Thread上繪畫。在這種情況下,您會想要使用java.swing.Timer進行動畫。基本結構是

Timer(int deleyInMillis, ActionListener listener) 

其中delayInMillisActionEvents由計時器所觸發之間的延遲毫秒。 ActionListener將成爲ActionEvents的收聽者列表。所以每個delayInMillisactionPerformed方法將被調用。

所以你可以做這樣的事情

Timer timer = new Timer(10000, new ActionListener(){ 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     if (someStoppingCondition) { 
      ((Timer)e.getSource()).stop(); 
     } else { 
      // do something every ten seconds. 
     } 
    } 
}); 
timer.start(); 

您可以在How to Use Swing Timers看到更多。您還可以看到一堆示例herehereherehereherehere