Почему содержание

В AppDelegate.cpp у нас есть следующий код в bool AppDelegate::applicationDidFinishLaunching():

glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL);
auto frameSize = glview->getFrameSize();

// if the frame's height is larger than the height of medium size.
if (frameSize.height > mediumResolutionSize.height)
{        
    director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));
     //Add Code to use large assets
}
// if the frame's height is larger than the height of small size.
else if (frameSize.height > smallResolutionSize.height)
{        
    director->setContentScaleFactor(MIN(mediumResolutionSize.height/designResolutionSize.height, mediumResolutionSize.width/designResolutionSize.width));
     //Add Code to use medium assets
}
// if the frame's height is smaller than the height of medium size.
else
{        
    director->setContentScaleFactor(MIN(smallResolutionSize.height/designResolutionSize.height, smallResolutionSize.width/designResolutionSize.width));
     //Add Code to use small assets
}


 director->setContentScaleFactor(MIN(largeResolutionSize.height/designResolutionSize.height, largeResolutionSize.width/designResolutionSize.width));

Почему мы берем МИН отношения высоты или ширины? Почему мы не всегда берем либо высоту, либо ширину? Не будет ли это непоследовательностью?

Поскольку ресурсы, которые мы используем, имеют фиксированный размер (например, в каждом блоке мы выбираем большие, средние или маленькие ресурсы), не отличается ли масштабирование для разных соотношений сторон, которые могут иметь одинаковую высоту или ширину? Не приведет ли это к еще более серьезным проблемам, таким как несоответствие физики и изображений на экране?


person Rahul Iyer    schedule 25.11.2016    source источник


Ответы (1)


Потому что, если вы выберете максимальный масштаб, он не будет соответствовать высоте/ширине (в зависимости от ориентации).

например разработанное разрешение 960x640

разрешение фонового спрайта 1024x768

1024/960 * 1024 ≈ 1092 - макс.

640/768 * 1024 ≈ 853 - мин.

поэтому, если вы выберете максимум, ваш фон будет шире, чем разработано, а полоса шириной 80 пикселей будет за пределами экрана.

в противном случае ваш фон будет соответствовать заданной ширине с некоторыми черными полосами по бокам (960-853) / 2 пикселя шириной.

Дополнительная информация

person Sugar    schedule 28.11.2016