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); 虽然显然你不能在这里这样做,因为你会失去图像翻转功能。有没有办法做到这一点?有没有办法转换图像比例但通过坐标设置其位置?
我问是因为转换是一种处理器密集度更高的活动,如果需要同时激活大量精灵,它可能真的会减慢一切。奖金问题:考虑到现代系统的力量,这是一个合理的担忧还是我应该不太担心。