Всем привет, я делаю игру в качестве опыта и у меня возникла потребность максимально оптимально произвести поворот спрайта. Я знаю как нарисовать отдельный спрайт: canvas.drawBitmap(bitmap, srcRect, destRect, paint), где srcRect — это часть изображения на экране, destRect — это та область экрана где будет произведена печать спрайта, а поворот я знаю что можно осуществить с помощью matrix (canvas.drawBitmap(bitmap, matrix, paint)) используя свойство translate, то куда нужно производить печать и rotate — собственно сам поворот.
Так вот, мне необходимо повернуть отдельный спрайт и соответственно вывести его, но сделать это максимально оптимально, я предполагаю что можно создавать битмапу задавая эти параметры, но будет ли это быстро и оптимально по памяти, я думаю нет, есть ли решения этой проблемы?
Создавать новый битмап при каждой отрисовке спрайта - однозначно не хорошо.
Если нужен динамичный поворот на произвольный угол, то лучше использовать матрицу:
// сохраняем настройки канваса
canvas.save();
// задаём его матрице поворот по центру нужной области
// degress - угол в градусах
canvas.rotate(degress, destRect.exactCenterX(), destRect.exactCenterY());
canvas.drawBitmap(bitmap, srcRect, destRect, paint);
// восстанавливаем настройки
canvas.restore();
Если состояний у объекта по пальцам пересчитать, то возможно лучше заготовить спрайт на все состояния.
Тут палка о двух концах - либо больше вычислений, либо больше расход памяти.
Что для Вашего случая критичнее, то и оптимизируйте.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей