Я делаю 2D платформер. Я создал текстуру для платформы, которая должна повторяться снова и снова, чтобы заполнить всю платформу, не переходя через край. Моя первая попытка заключалась в том, чтобы нарисовать все пиксели из растрового изображения вручную, но это привело к мерцанию фона при перемещении платформы (потоки движения и рисования разделены, поэтому движение может выполняться с определенной скоростью c, в то время как FPS страдать не надо). Я обнаружил, что этот метод работает лучше:
// Init
bitmap = new BitmapDrawable(res, Texture.PLATFORM.getBitmap());
bitmap.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
// Drawing loop
int x = getX() + (isStill() ? 0 : (int)MainActivity.offsetX);
int y = getY() + (isStill() ? 0 : (int)MainActivity.offsetY);
bitmap.setBounds(x, y, x + getWidth(), y + getHeight());
bitmap.draw(canvas);
Однако растровое изображение, похоже, остается неизменным c, в то время как платформа действует как «смотровое отверстие» для просмотра растрового изображения. Единственное, что я могу придумать, - это каким-то образом "сместить" stati c bitmap:
bitmap.offset(x, y);
Очевидно, это не функция. Я не смог найти тот, который делал бы то, что я хочу, просматривая документацию.
Чтобы вызвать что-то, BitmapDrawable заставляет фон не перемещаться вместе с платформой, что делает его очень странным.
Заранее спасибо!