2017-07-30 13 views
0

静的画像上に動くオブジェクトをアニメーション化することによってJavaを学習しようとしています。私のイメージは、キャンバスに描かれているし、すべてが、私は「RECTを動かす」の私のオブジェクトを描画するためにタイマーを呼び出す方法で立ち往生しています静的画像の上に動く矩形をアニメ化するJava SWT

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

の内側に描かれています。私はそれを "動くrect"クラスの中に置いていますか?

答えて

1

timerExecメソッドをDisplayとすると、遅延の後にRunnableを実行するようにスケジュールできます。 Runnableはコントロールを再描画できます。例えば

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

100ミリ秒(コードRunnableのJava 8のラムダを使用)の遅延後redrawメソッドを呼び出します。 paintControlメソッドの最後にこれを呼び出すことができます。

+0

完全に作業しました。しかし、私はアプローチが正しいかどうかを尋ねたいと思います。私のキャンバスpainControlの中に静的なものをたくさん描画しています。静的なものが再描画されたことを意味します。 –

+0

ペイントリスナー。キャンバスを完全に再描画する必要がある場合があるため、選択的に再描画することは困難です。クリッピング矩形を設定して領域を再描画するように設定する 'redraw(x、y、width、heigth、false)'呼び出しがあります。 –

関連する問題