Разрешение экрана Кросс-устройства Corona SDK
Это будет один из тех неудобных вопросов, которые ищут ответ, который, вероятно, не существует, но здесь идет.
Я разрабатывал некоторые простые игры с использованием 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 по мере необходимости), но это приводит к буквенной или обрезке в зависимости от конфигурации.шкала lua установочный. Хотя он масштабируется правильно, наличие почтового ящика не является большим.
поэтому было бы лучше не указывать ширину и высоту в файле конфигурации, а вместо этого использовать какую-то проверку экрана сначала, чтобы искать 1.33 / 1.5 / 1.77 пропорции? Конечно, со всем смыслом Corona SDK будет какая-то "типичная" настройка, которую разработчики используют для запуска любого нового проекта?
спасибо
2 ответов
кажется, что я нашел довольно хорошее решение на основе этого сообщения форума на веб-сайте Ansca: http://developer.anscamobile.com/forum/2012/03/12/understanding-letterbox-scalling
в резюме в конфиге.Луа должна выглядеть так:
application = {
content = {
width = 320,
height = 480,
scale = "letterbox",
xAlign = "center",
yAlign = "center",
imageSuffix = {
["@2x"] = 2,
},
}
}
создание фоновых изображений на 360*570 для старых устройств. 320x480 экраны будут обрезать изображение немного, и он будет масштабироваться красиво для старых устройств Android.
создание фоновых изображений на 1140*720 для iPad и iPhone retina-снова они будут масштабироваться на 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
Это всего лишь резюме, поэтому проверьте ссылку для получения более подробных инструкций.
Ну, вы можете использовать число немного от 2 для масштабирования, если вы хотите правильные изображения для разных устройств. Ex:
application =
{
content =
{
width = 640,
height = 960,
scale = "zoomEven",
imageSuffix =
{
["-iphone3"] = 0.5,
["-ipad2"] = 1.066,
["-ipad3"] = 2.133,
},
}
}
в каком "фоне.png "будет изображением 640x960 для iphone4, а" background-iphone3.png " будет 320x480 (вам это не нужно, но это уменьшит потребность в памяти для приложений iphone3). "фон-iPad3, так.png " должен быть 1536x2048 (и половина этого для-ipad2).
конечно, это не решает соотношение сторон для позиционирование экрана, но он решает его для всех других проблем, связанных с gfx. Не забудьте использовать дисплей.newImageRect, а не дисплей.newImage или вы не увидите никакой разницы.