Разрешение экрана устройства Corona SDK Cross - PullRequest
11 голосов
/ 19 марта 2012

Это будет один из тех неловких вопросов, которые ищут ответ, который, вероятно, не существует, но здесь идет.

Я разрабатывал несколько простых игр с использованием Corona, и, хотя кажется, что функциональность довольно хорошо работает на большинстве физических устройств, на которых я тестировал, одной из основных проблем является макет. Я знаю, что вы не можете действительно построить для каждого отдельного устройства идеально, но мне интересно, есть ли общий метод, чтобы приложение выглядело хорошо на как можно большем количестве экранов. У меня есть доступ к этим устройствам

  • iPad 1 & 2: 4: 3 (1,33)
  • iPhone 960 × 640 3: 2 (1,5)
  • iPhone 480x320 3: 2 (1,5)
  • Galaxy Nexus 16: 9 (1,77)

Из того, что я видел, люди стремятся использовать 320x480 в качестве масштабированного разрешения, а затем позволяют Corona увеличивать масштаб до правильного разрешения устройства (с любыми изображениями @ 2x, как требуется), но это приводит к почтовому ящику или кадрированию в зависимости от config.lua. настройка масштаба. Хотя он правильно масштабируется, наличие почтового ящика не очень хорошо.

Так что мне лучше не указывать ширину и высоту в конфигурационном файле, а вместо этого сначала использовать какую-то проверку экрана для поиска соотношений сторон 1.33 / 1.5 / 1.77? Конечно, с точки зрения Corona SDK, существует какая-то «типичная» настройка, которую разработчики используют для запуска любого нового проекта?

Спасибо

Ответы [ 2 ]

8 голосов
/ 20 марта 2012

Похоже, я нашел довольно хорошее решение на основе этого сообщения на форуме Ansca: http://developer.anscamobile.com/forum/2012/03/12/understanding-letterbox-scalling

В итоге, config.lua должен выглядеть следующим образом:

application = {
    content = {
        width = 320,
        height = 480,
        scale = "letterbox",
        xAlign = "center",
        yAlign = "center",
        imageSuffix = {
        ["@2x"] = 2,
    },
    }
}

Создание фоновых изображений на 360 * 570 для старых устройств. Экраны 320x480 немного обрезают изображение и хорошо масштабируются для старых устройств Android.

Создайте фоновые изображения в 1140 * 720 для iPad и iPhone с сетчаткой - опять же они будут масштабироваться на Android и слегка обрезаться на iOS.

В качестве примера, где вы обычно создаете изображение 320x480 и отображаете его с помощью:

local bg = display.newImageRect("bg.png",320x480)
bg.x = display.contentWidth/2
bg.y = display.contentHeight/2

.. вместо этого создайте фон 360x570 и используйте следующий код:

local bg = display.newImageRect("bg.png",360x570)
bg.x = display.contentWidth/2
bg.y = display.contentHeight/2

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

3 голосов
/ 03 августа 2012

Ну, вы МОЖЕТЕ использовать число, немного отличное от 2, для масштабирования, если вы хотите корректные изображения для разных устройств. Пример:

    application = 
{
    content = 
    { 
        width = 640,
        height = 960, 
        scale = "zoomEven",
        imageSuffix =
        {
            ["-iphone3"] = 0.5,
            ["-ipad2"] = 1.066,
            ["-ipad3"] = 2.133,
        },
    }
}

В котором "background.png" будет изображением 640x960 для iphone4, тогда как "background-iphone3.png" будет 320x480 (вам это не нужно, но это уменьшит потребность в памяти для приложений iphone3). "background-ipad3.png" должен быть 1536x2048 (и вдвое меньше, чем -ipad2).

Конечно, он не решает соотношение сторон для позиционирования экрана, но решает его для всех других проблем, связанных с gfx. Не забудьте использовать display.newImageRect, а не display.newImage, иначе вы не увидите никакой разницы.

...