2016-11-25 18 views
1

В 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)); 

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

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

ответ

0

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

, например разработанной резолюции 960x640

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

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

640/768 * 1024 ≈ 853 - мин

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

в противном случае, ваш bg будет вписываться в проектную ширину с некоторыми черными полосками в стороне от него (960-853)/2 px в ширину.

Related information