15歳からはじめるJAVAわくわくゲームプログラミング教室の覚書

  • このエントリーをはてなブックマークに追加

本紙の疑問とか覚書



P106~107
getDrawGraphics()とGraphics2Dについて勉強する必要があるな。
とりあえず、(1)~(3)を覚えておく。
(1)一部のGraphicsオブジェクトはGraphics2Dにキャストできる。
(2)Graphics2DがGraphicsを継承しているわけではなく、Graphics2DはGraphicsというインターフェースを拡張したものである。
(3)「Graphics2DはGraphicsというインターフェースを拡張したもの」
=「Graphics2D オブジェクトは Graphics インターフェースの一部のメソッドを継承する」
注意なのが、「Graphics2D オブジェクトは Graphicsを継承している」という言い方は間違え。

うーん。(1)の「一部のGraphicsオブジェクトはGraphics2Dにキャストできる。」だけど、なぜキャスト可能なのだろうか?イマイチ理解できないけど、ここまでにしておこう。また、今度勉強しよ。

Javaでもinstanceof演算子がある。instanceofは、オブジェクトが特定のクラスまたはインターフェースのインスタンスであるかどうかを確認するために使用される。基本的な構文は以下の通りである。


if (オブジェクト instanceof クラスまたはインターフェース) {
    // オブジェクトは指定されたクラスまたはインターフェースのインスタンスです。
}

Graphics gRaw = this.strategy.getDrawGraphics();
if (gRaw instanceof Graphics2D) {
  System.out.println("gRawはtrue");
}

JFrame mainwindow;
BufferStrategy strategy;

this.mainwindow = new JFrame("シューティング");
this.strategy = this.mainwindow.getBufferStrategy();

// getDrawGraphics()の戻り値の型はGraphicsなので
// GraphicsからGraphics2Dに型変換する(GraphicsからGraphics2Dにキャストするとも言う)
Graphics2D g = (Graphics2D)this.strategy.getDrawGraphics();
g.setBackground(Color.black);
Graphics gRaw = this.strategy.getDrawGraphics();
if (gRaw instanceof Graphics2D) {
  System.out.println("gRawはtrue");
}

P112
frametime=0.016のとき、0.016秒で1ピクセル動くため、速度は(1/0.016)=62.5[ピクセル/秒]
→1秒で62.5ピクセル動く
frametime=0.032のとき、0.032秒で1ピクセル動くため、速度は(1/0.032)=32.35[ピクセル/秒]
→1秒で32.35ピクセル動く
つまり、1秒で32.35ピクセルは遅い。1秒で62.5ピクセル動くは速い。
こうだな。
速度60[ピクセル/秒]というのは0.016秒でframeから次のframeに変わるときだけ。

この0.016秒とは?
1秒でrender関数を60回呼び出す場合(1/60)=0.01666666・・・≒0.016

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*