从中心旋转缩放图像

时间:2013-01-31 03:36:40

标签: android andengine

我有一些精灵(嗯,实现Sprite的自定义类,但无论如何)我调整大小。 AndEngine从中心调整图像大小,这使得放置在0,0的图像不再出现在0,0。为了解决这个问题,我申请了

    sprite.setScaleCenterX(0);
    sprite.setScaleCenterY(0);

这会将图像放在我想要的位置。但是,现在当我旋转图像时,图像会四处移动(如果图像是普通的正方形,则旋转它应该没有明显的变化)。为了解决这个问题,我申请了

    sprite.setRotationCenterX((sprite.getWidth() * sprite.getScaleX()) / 2);
    sprite.setRotationCenterY((sprite.getHeight() * sprite.getScaleY()) / 2);

(出于某种原因,调整Sprite的大小不会改变精灵的尺寸,只会改变视觉图像,因此会将其乘以比例)。但是,这并没有解决问题,只是改变了图像在翻转时移动到的位置。

我的数学是否在这里?这不会使图像上的旋转居中,使图像不会移动位置吗?或者还有其他我想念的东西?

以下是完整代码:

    Sprite sprite = new Sprite(0, 0, singleTrackTR, getVertexBufferObjectManager());
    sprite.setScale(scaleX, scaleY);
    sprite.setScaleCenterX(0);
    sprite.setScaleCenterY(0);
    sprite.setRotationCenterX((sprite.getWidth() * sprite.getScaleX()) / 2);
    sprite.setRotationCenterY((sprite.getHeight() * sprite.getScaleY()) / 2);

1 个答案:

答案 0 :(得分:0)

您的所有代码都是正确的。我自己尝试了,包括setProperty(x,y)和setPropertyX / Y(a)版本。

任何机会,你把它连接到身体吗?请注意,Body也不会使用Sprite的setScale进行缩放。它有自己的setTransform方法,它采用x和y(你必须除以PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT)和旋转值。