我想了解如何使用某種基本動畫。我可以使用線程,但是我被多人告知不要在java中使用多線程。我想我冷做類似的事情:使用計時器的動畫?
Timer t = new Timer(10, somthing);
t.start();
x++;
t.end();
這是我對它的基本理解。有人可以鏈接教程或解釋如何讓時間每10秒鐘或更長時間做一些事情嗎?
我想了解如何使用某種基本動畫。我可以使用線程,但是我被多人告知不要在java中使用多線程。我想我冷做類似的事情:使用計時器的動畫?
Timer t = new Timer(10, somthing);
t.start();
x++;
t.end();
這是我對它的基本理解。有人可以鏈接教程或解釋如何讓時間每10秒鐘或更長時間做一些事情嗎?
首先,你爲什麼不告訴多線程?這似乎是現代計算機的一個非常有限的規則。
看起來好像你想安排一個任務以給定的速度開火。你應該看看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
如果你想使用擺動計時器,也可以使一個是這樣的:
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
「不以Java多線程」 不健全的權利。建議可能適用於Swing,並運行您的應用程序/在Event Dispatch Thread上繪畫。在這種情況下,您會想要使用java.swing.Timer
進行動畫。基本結構是
Timer(int deleyInMillis, ActionListener listener)
其中delayInMillis
是ActionEvents
由計時器所觸發之間的延遲毫秒。 ActionListener
將成爲ActionEvents
的收聽者列表。所以每個delayInMillis
actionPerformed
方法將被調用。
所以你可以做這樣的事情
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看到更多。您還可以看到一堆示例here和here和here和here和here和here。