2017-07-30 117 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)'调用,用于设置剪切矩形以限制重绘的区域。 –