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方法。该方法使用动画循环调用,它在屏幕上绘制一组动画精灵,根据计时器将方法中的正确帧传递给该方法。精灵也以随机产生的速度在屏幕上移动,从框架的边缘反弹。根据它们是向左还是向右移动,绘制方法转换图像,使精灵面向正确的方向。所有转换信息都包含在drawImage方法的转换中,我以前将其视为g.drawImage(Image,x,y,null);虽然很明显你不能这样做,因为你会丢失图像翻转功能。有没有办法做到这一点?有没有办法转换图像比例,但按坐标设置其位置?
我问,因为转换是一个更加处理器密集型的活动,如果需要立即激活大量的精灵,它可能真的会减慢一切。奖金问题:考虑到现代系统的优势,这是一个合理的问题还是我不应该太担心。