Код для поворота растрового изображения с использованием матрицы, вызывающей принудительное закрытие - PullRequest
0 голосов
/ 04 декабря 2011

Я работаю над простой игрой, где мяч падает на склоне и должен избегать препятствий, прыгая. Проблема возникает, когда я пытаюсь повернуть шаровой объект с помощью Matrix. Я использую следующий код: -

private void rotateMe() {
    if(jump==0){
        Matrix mtx=new Matrix();
        mtx.postRotate(deg);
        Bitmap rotatedBMP=Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), mtx, false);
        deg=deg+1; //deg=0 in beginning
        bm=rotatedBMP;
    }   
}

Этот метод написан в классе ball, который внутренне вызывается другим методом move (). Растровое изображение BM не вращается, как я хотел. Он просто выпадает из экрана, и кажется, что размер растрового изображения увеличился. И я вынужден закрыть его через несколько секунд.
Я видел другие вопросы с поворотными растровыми изображениями, но они не работают и для меня. Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 04 декабря 2011

Вы вращаете Matrix с одним и тем же значением (10) все время.Вот почему мяч не вращается.Сделайте следующее: mtx.postRotate(deg);

Кроме того, общее замечание: я полагаю, вы рисуете получившийся вращающийся шар bm?Если вы рисуете шар в другом потоке, то первое, на что вы должны обратить внимание, это убедиться, что ваши потоки имеют эксклюзивный доступ к bm, чтобы вы не рендерили шар, пока на него влияют новые значения вbm=rotatedBMP;

0 голосов
/ 08 декабря 2011

В любом случае нашел ответ сам.Код, который я сейчас использую, выглядит следующим образом (для тех, у кого такая же проблема)

Matrix mtx=new Matrix();
mtx.postRotate(deg,25,25);
mtx.postTranslate(x, y);
c.drawBitmap(bm, mtx, paint);
deg=deg-10;

Код работает нормально.В любом случае, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...