仿射变换兼容性

时间:2012-06-07 11:45:56

标签: java animation

    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);虽然很明显你不能这样做,因为你会丢失图像翻转功能。有没有办法做到这一点?有没有办法转换图像比例,但按坐标设置其位置?

我问,因为转换是一个更加处理器密集型的活动,如果需要立即激活大量的精灵,它可能真的会减慢一切。奖金问题:考虑到现代系统的优势,这是一个合理的问题还是我不​​应该太担心。

0 个答案:

没有答案