2011-05-19 138 views
0

我想知道你們是否可以幫助我。我試圖用Java內置的圖形模塊製作一個動畫程序......事情是,Java一次執行所有內容;在不同的動畫之間沒有任何時間。最終產品只是最後一張照片。我需要在每張照片之間放置半秒的功能。Java等待函數

任何幫助表示讚賞。

規格:藍-J,JDK 6

編輯:順便說一句,我是一個Java新手,這是一類的東西。這個任務是製作一個動畫,並按'c'前進每一幀,但我認爲那有點貧民窟,所以我想要更好的東西。

回答

4

創建一個執行每個X毫秒的javax.swing.Timer,並在每次觸發時繪製一幀。

這是從Javadoc中的示例:

int delay = 1000; //milliseconds 
    ActionListener taskPerformer = new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
      //...Perform a task... 
     } 
    }; 
    new Timer(delay, taskPerformer).start(); 

修改延時向例如20毫秒。如果你的繪畫不需要太長時間,這將會給你每秒約50幀。

+0

我是一個巨大的新手在java ..但即時通訊試圖瞭解這個..我只是把這個新的函數,然後把它放在使動畫的while循環? – 2011-05-19 06:43:23

+0

噢,沒關係,我想我會看到它..所以我會把我的循環放在代碼塊裏,它說「Preform a task」...對嗎? – 2011-05-19 06:44:57

+0

您不應該有製作動畫的while循環。您需要更改代碼,以便僅繪製一幀動畫。上面的代碼應該觸發繪圖,每個繪圖將繪製下一個框架。 – Kaj 2011-05-19 06:45:19

0

也許一個簡單的睡眠可能就足夠了嗎?

Thread.sleep(milliseconds); 
+0

在處理動畫時,睡眠不太可能是正確的答案。使EDT/AWT線程睡眠凍結UI,然後EDT/AWT線程將被阻止處理事件。 – Kaj 2011-05-19 06:53:02

+0

@styken我剛剛發現,在談論GUI編程時,這種方法是非常糟糕的用法。請參閱此帖以獲取更多信息:http://stackoverflow.com/questions/25233881/why-wont-my-jframe-respond-to-mouse-and-window-changes/25234030#25234030 – nbro 2014-08-11 00:33:27