Android libgdx с большим разрешением экрана - PullRequest
4 голосов
/ 13 мая 2011

Как я могу поддержать (создать алгоритм) libgdx для поддержки нескольких разрешений экрана?Я заставил свое приложение работать в HTC Tattoo, используя статистику с такими параметрами, как:

if (Gdx.input.getX()==40) {

Каков хороший алгоритм для работы на больших экранах?Я попробовал это, но безрезультатно:

publis static int translatex() {
     float p = (float)Gdx.graphics.getHeight()*340;
     return (int) p*Gdx.input.getX();
}

340 - это базовое значение x (разрешение x на моем телефоне), которое я использовал в HTC Tattoo.Итак ..... как я могу сделать функцию поддержки больших экранов с абсолютными значениями.Я не хочу менять операторы if.

Ответы [ 2 ]

14 голосов
/ 15 мая 2011

Это довольно легко. Вы в основном строите всю свою программу для собственного разрешения, но во всем, что касается позиционирования и изменения размеров текстур, есть что-то вроде этого:

private void resize()
{
    float x = Gdx.graphics.getWidth();
    float y = Gdx.graphics.getHeight();

    float changeX = x / assumeX; //being your screen size that you're developing with
    float changeY = y / assumeY;

    position = new Vector2(position.x * changeX, position.y * changeY);
    width = startWidth * changeX;
    height = startHeight * changeY;
    bounds = new Vector2 (position.x, (Gdx.graphics.getHeight() - position.y) - height);

}

По сути, вы берете каждый сгенерированный объект и пропускаете его через что-то, что увеличивается / уменьшается в зависимости от изменения значений x / y в вашем разрешении. Чем дальше от родного, тем больше будет. Когда вы проверяете что-то где-то или помещаете что-то куда-либо, всегда кодируйте его как желаемое разрешение, но пропустите его через функцию изменения размера, прежде чем отобразить это или позволить взаимодействовать с остальной частью вашей программы.

3 голосов
/ 15 июля 2012

См. Более элегантное решение по адресу http://www.java -gaming.org / index.php? Topic = 25685.0 (также см. Комментарий Нейта к этому решению).

Кроме того, если выиспользуйте scene2d, обратите внимание, что в настоящее время (libgdx 0.9.6) stage.setViewport метод должен обладать этой функциональностью, но он на самом деле не ведет себя так, как следовало ожидать.

Обновление: setViewPort был исправлен, поэтому он работает так, как ожидалось.

...