2017-07-30 32 views
0

我想通過在靜態圖像上動畫移動對象來學習Java。我的形象繪製在畫布,一切都畫裏面動畫在靜態圖像上移動矩形Java SWT

canvas.addPaintListener(new PaintListener() { 
      public void paintControl(PaintEvent e){ 
     //Do Stuff 
} 

我停留在如何調用一個計時器畫我「移動矩形」的對象。我是否將其放置在「移動矩形」課堂內?

回答

1

您可以使用timerExec方法Display安排Runnable在延遲後運行。 Runnable可以重新繪製控件。

例如:

canvas.getDisplay().timerExec(100,() -> canvas.redraw()); 

將100毫秒(代碼使用一個Java 8的λ爲Runnable)的延遲後調用redraw方法。你可以在paintControl方法的末尾調用它。

+0

完美工作。但是我想問一下,如果這種方法對於只重繪「移動矩形」是正確的。因爲在我的畫布painControl中我會畫很多靜態的東西,我的意思是那些靜態的東西也得到了重繪 –

+0

你應該只繪製在畫圖偵聽器。嘗試有選擇地進行重繪很困難,因爲在某些情況下,畫布可能需要完全重新繪製。有一個'redraw(x,y,width,heigth,false)'調用,用於設置剪切矩形以限制重繪的區域。 –