日記を埋めるためだけのネタつぶし(1)
Midpはrepaintメソッドを呼んだ際に、別スレッドで行われている描画を待つためにserviceRepaintsメソッドが
用意されているが、Dojaはそれがないのでrepaintをオーバーライドしてやる必要がある。
このとき、getGraphicsメソッドで取得するインスタンスは常に確保しておく必要がある。
class MainCanvas extends Canvas implements Runnable{
Graphics maing = getGraphics();public void repaint() {
paint(maing);
}
public void paint(Graphics g) {
g.lock();
g.unlock(true);
}
}
上記のようにrepaintのたびにgetGraphicsメソッドを呼んでしまった場合
class MainCanvas extends Canvas implements Runnable{
public void repaint() {
paint(getGraphics());
}
public void paint(Graphics g) {
g.lock();
g.unlock(true);
}
}
インスタンスが毎回作成されてしまうので、処理が遅くなってしまう。
以下リファレンスよりgetGraphicsメソッドの説明
[DoJa-2.0 以降]
getGraphicsメソッドを呼び出すたびに新しいオブジェクトを生成して返します。