Повернуть отдельный спрайт Android

231
18 декабря 2017, 13:56

Всем привет, я делаю игру в качестве опыта и у меня возникла потребность максимально оптимально произвести поворот спрайта. Я знаю как нарисовать отдельный спрайт: canvas.drawBitmap(bitmap, srcRect, destRect, paint), где srcRect — это часть изображения на экране, destRect — это та область экрана где будет произведена печать спрайта, а поворот я знаю что можно осуществить с помощью matrix (canvas.drawBitmap(bitmap, matrix, paint)) используя свойство translate, то куда нужно производить печать и rotate — собственно сам поворот.

Так вот, мне необходимо повернуть отдельный спрайт и соответственно вывести его, но сделать это максимально оптимально, я предполагаю что можно создавать битмапу задавая эти параметры, но будет ли это быстро и оптимально по памяти, я думаю нет, есть ли решения этой проблемы?

Answer 1

Создавать новый битмап при каждой отрисовке спрайта - однозначно не хорошо.
Если нужен динамичный поворот на произвольный угол, то лучше использовать матрицу:

    // сохраняем настройки канваса
    canvas.save();
    // задаём его матрице поворот по центру нужной области
    // degress - угол в градусах
    canvas.rotate(degress,  destRect.exactCenterX(), destRect.exactCenterY());
    canvas.drawBitmap(bitmap, srcRect, destRect, paint);
    // восстанавливаем настройки
    canvas.restore();

Если состояний у объекта по пальцам пересчитать, то возможно лучше заготовить спрайт на все состояния.
Тут палка о двух концах - либо больше вычислений, либо больше расход памяти.
Что для Вашего случая критичнее, то и оптимизируйте.

READ ALSO
Отсутствие return

Отсутствие return

Почему после последней фигурной скобки есть эта ошибка:missing return statement Весь код:

188
Android асинхронная запрос ViewPager

Android асинхронная запрос ViewPager

При старте Activity(в методе onCreate) отправляется запрос на сервер, с которого приходит количество элементов-фрагментов для ViewPagerViewPagerAdapter Требует...

185
Объявление параметров метода как final

Объявление параметров метода как final

Давайте представим, что есть некий метод, который принимает скажем 3 параметра

175
Структура проекта для Maven

Структура проекта для Maven

Чтобы упростить понимание моего вопроса, я максимально упрощу ситуациюУ меня есть проекы Hotel и Configurator

239