私は基本的に単純なゲームエンジンをプログラミングしていますが、スプライト/画像が表示されるべきときに表示されないという問題があります...またはまったく表示されません!
これをできるだけシンプルにしようと思います。Sprite、GameEngine、および Display クラスがあります。ゲームループには、スプライトの新しい位置を設定するメソッドがあります (つまり、x 変数と y 変数を設定するだけです)。次に、次の処理を行う変換メソッドを呼び出します。
public void transform() {
affineTransform.setToIdentity();
affineTransform.translate(x, y);
}
その後、Sprite で draw メソッドを呼び出します。
public void draw() {
graphics2D.drawImage(image, affineTransform, jFrame);
}
最後に、スレッドで、JFrame (Display クラス) で repaint() を呼び出します。そのクラスの私のペイント方法は次のとおりです。
public void paint(Graphics g) {
g.drawImage(backbuffer, insets.left, insets.top, this);
}
しかし、黒い画面以外は何も表示されません!
また、Graphics g と Graphics2D の間で混乱し、どちらを使用するかについても混乱しています。(オーバーライドされたペイント メソッドは Graphics g を使用します)。記録として、backbuffer.createGraphics(); を呼び出すことによって作成されるクラスに Graphics2D 変数があります。
私を混乱させているもう1つのことは、このAffineTransformです...ドキュメントを読みましたが、それをいつどのように使用するか、そしてそれが正確に何をしているように見えるかについて、まだ完全に混乱しています。比較的簡単な言葉で説明はありますか?
確かにこれは機能するはずです...ここで何か不足していますか?