проблема в расчете в координатах после поворота холста - PullRequest
0 голосов
/ 05 июля 2011

Я работаю над демонстрационной демонстрацией игры, в которой я просто помещаю изображение на холст, а на устройстве 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);
}

теперь в классе Game view в методе onDraw ()

canvas.rotate(rotateX, imageCenterX, imageCenterY);
canvas.translate(0,translateY);

Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 05 июля 2011

Ваша проблема может заключаться в том, что изменения, которые вы вносите в canvas, не сбрасываются. Прежде чем вносить какие-либо изменения в canvas (например, вращение), вызовите canvas.save (). И затем, когда вы закончите рисовать с этими изменениями, вызовите canvas.restore (). Как это:

canvas.save();
canvas.rotate(foo, bar, sar);
blah.draw(canvas);
canvas.restore();
0 голосов
/ 17 октября 2011

Я решил свою проблему.

Я просто swap the method of canvas.

Как

canvas.translate(0,translateY); 
canvas.rotate(rotateX, imageCenterX, imageCenterY); 

Тогда все работает нормально.

...