public void draw(Graphics2D g) {
// draw background
g.drawImage(bgImage, 0, 0, null);
g.drawImage(bgImage, 700, 0, null);
g.drawImage(bgImage, 0, 500, null);
g.drawImage(bgImage, 700, 500, null);
AffineTransform transform = new AffineTransform();
for (int i = 0; i < NUM_SPRITES; i++) {
Sprite sprite = sprites[i];
// translate the sprite
transform.setToTranslation(sprite.getX(),
sprite.getY());
// if the sprite is moving left, flip the image
if (sprite.getVelocityX() < 0) {
transform.scale(-1, 1);
transform.translate(-sprite.getWidth(), 0);
}
// draw it
g.drawImage(sprite.getImage(), transform, null);
}
}
}
このクラスの draw メソッドを見ていました。このメソッドはアニメーション ループで呼び出され、一連のアニメーション スプライトを画面に描画し、タイマーに応じてアニメーションの正しいフレームをメソッドに渡します。スプライトはまた、ランダムに生成された速度で画面上を動き回り、フレームの端で跳ね返ります。スプライトが左または右に移動しているかどうかに応じて、draw メソッドは画像を変換し、スプライトが正しい方向を向くようにします。その変換情報はすべて、g.drawImage(Image, x, y, null); として見慣れている drawImage メソッドの変換に含まれています。ただし、画像の反転機能が失われるため、ここでは明らかにそれを行うことはできません。それを行う方法はありますか?画像の縮尺を変換する方法はありますが、その位置を座標で設定する方法はありますか?
変換はより多くのプロセッサを集中的に使用するアクティビティであり、一度に多数のスプライトをアクティブにする必要がある場合、すべてが本当に遅くなる可能性があるためです。おまけの質問: これは正当な懸念事項ですか、それとも最新のシステムの強度を考えるとあまり心配するべきではありませんか.