【发布时间】:2013-03-22 14:33:40
【问题描述】:
我正在尝试使用我在某处找到的现成解决方案来旋转我的位图。代码如下:
public void onDraw(Canvas canvas) {
float x = ship.Position.left;
float y = ship.Position.top;
canvas.drawBitmap(ship.ship, x,y,null);
invalidate();
}
但是,当我这样做时,X 轴和 Y 轴会改变它们的方向 - 如果我增加 Y 轴,图像会朝向屏幕顶部,而不是朝向底部。如果我旋转 90 度,X 也会发生同样的情况。
我需要旋转它,但不改变 Y 轴和 X 轴方向。
即使旋转,如果我增加 Y,我仍然希望位图向底部移动,如果我增加 X,我仍然希望位图向右移动。
public void update()
{
if(!moving)
{
fall();
}
else //moving
{
move();
faceDirection();
}
Position.top += Speed;
}
private void move() {
if(Speed < MAXSPEED)
Speed -= 0.5f;
}
private void fall() {
if(Speed > MAXSPEED*-1)
Speed += 0.2f;
}
private void faceDirection() {
double OldDiretion = Direction;
Direction = DirectionHelper.FaceObject(Position, ClickedDiretion);
if (Direction != OldDiretion)
{
Matrix matrix = new Matrix();
matrix.postRotate((float)Direction);
ship = Bitmap.createBitmap(ship, 0, 0, ship.getWidth(),ship.getHeight(), matrix, false);
}
我尝试了上面的代码,但它仍然在改变 Y 方向,它会到达 BitMap 的底部,而不是屏幕的底部。
这里是项目:https://docs.google.com/file/d/0B8V9oTk0eiOKOUZJMWtsSmUtV3M/edit?usp=sharing
【问题讨论】:
-
澄清一下,您不希望它围绕中心点旋转,而是围绕左上角旋转?
-
我希望它在用户触摸的地方旋转,但是重力仍然会将位图推到底部,现在,它是这样的:如果您单击顶部,“重力”会发生变化,并且位图是转到顶部而不是底部,因为它已旋转(180)并且我不想要它。
-
您能否发布您的代码部分,在其中更改 x/y 并观察异常行为?
-
更新了问题,就是这样。