我正在制作一个示例游戏演示,其中我只是在画布上放置一个图像,并在Android设备传感器上更改画布平移并移动到适当的位置。我想在y轴上(上下)翻译画布,并在x轴上旋转它。但是当我第一次旋转画布时,我的y轴坐标发生变化,并且在x轴上完成了变换。
我知道画布旋转角度和新x,y坐标计算的问题,但我不知道该怎么做。
这是示例代码:
在我的活动课
中@Override
public void onSensorChanged(int sensor, float[] values) {
// TODO Auto-generated method stub
rotateX = values[0];
translateY = values[1];
Game.setDirection(rotateX,translateY);
}
现在在onDraw()方法的游戏视图类中
canvas.rotate(rotateX, imageCenterX, imageCenterY);
canvas.translate(0,translateY);
提前完成。
答案 0 :(得分:1)
您的问题可能是您对画布所做的更改未重置。在对canvas进行任何更改(如旋转)之前,请调用canvas.save()。然后,当您完成绘制这些更改后,请调用canvas.restore()。像这样:
canvas.save();
canvas.rotate(foo, bar, sar);
blah.draw(canvas);
canvas.restore();
答案 1 :(得分:0)
我解决了我的问题。
我只是swap the method of canvas
。
喜欢
canvas.translate(0,translateY);
canvas.rotate(rotateX, imageCenterX, imageCenterY);
然后它工作正常。