Разрешение Cocos2d-iPhone и iPhone X - PullRequest
       46

Разрешение Cocos2d-iPhone и iPhone X

0 голосов
/ 27 сентября 2018

Можете ли вы поверить, что мы до сих пор используем Cocos2d-iPhone?

У кого-нибудь есть исправления для того, чтобы заставить его работать с новейшими iPad и iPhone X?

Наш режим - альбомный.

1 Ответ

0 голосов
/ 09 октября 2018
  1. Если cocos2d версии 1.0 - 2.1, то обновите его до Cocos2d 2.2
  2. Добавьте заставку iPhoneX в Images.xcassets
  3. В файле CCConfiguration.m обновлена ​​функция ниже.В этом мы обрабатываем contentScaleFactor 3.

    -(NSInteger) runningDevice
    {
        NSInteger ret=-1;
    
          #ifdef __CC_PLATFORM_IOS
    
        if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        {
            ret = (CC_CONTENT_SCALE_FACTOR() == 2) ? kCCDeviceiPadRetinaDisplay : kCCDeviceiPad;
        }
        else if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone )
        {
            // From http://stackoverflow.com/a/12535566
            BOOL isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));
    
            if( CC_CONTENT_SCALE_FACTOR() == 2 ) {
                ret = isiPhone5 ? kCCDeviceiPhone5RetinaDisplay : kCCDeviceiPhoneRetinaDisplay;
    
                // Guru - Handle iPhone Plus device, iPhoneX
                // - - - - -  - - --  -- - - - -- - -  - - -
                if([[UIScreen mainScreen] scale]==3)
                {
                    ret = kCCDeviceiPhone5RetinaDisplay;
                }
            }
            else
            {
                // Guru - Handle iPhone Plus device, iPhoneX
                // - - - - -  - - --  -- - - - -- - -  - - -
                if([[UIScreen mainScreen] scale]==3)
                {
                    ret = kCCDeviceiPhone5RetinaDisplay;
                }
                else
                // - - - - -  - - --  -- - - - -- - -  - - -
                ret = isiPhone5 ? kCCDeviceiPhone5 : kCCDeviceiPhone;
            }
        }
    
        #elif defined(__CC_PLATFORM_MAC)
    
        // XXX: Add here support for Mac Retina Display
        ret = kCCDeviceMac;
    
         #endif // __CC_PLATFORM_MAC
    
          return ret; 
    

    }

  4. Используйте кнопки и другое изображение с iPhone5HD и вручную загружайте фон для iPhone X

    CCSprite *bg ;
    if([App isIphoneX])
    {
       bg = [CCSprite spriteWithFile:@“Background-iphoneX.png"]; // 1624X750 image size
    }
    else
    {
       bg = [CCSprite spriteWithFile:@"Background.png"]; // make sure -hd,-ipad,-ipadhd, -iphone5hd there
    }
    

ИЛИ просто масштабируйте изображение bg

#define SW ([[CCDirector sharedDirector] winSize].width)
#define SH ([[CCDirector sharedDirector] winSize].height)

CCSprite *bg ;
if([App isIphoneX])
{
      bg = [CCSprite spriteWithFile:@"Background.png"];
      bg.scaleX = SW/bg.contentSize.width;
       bg.scaleY = SH/bg.contentSize.height;

} 

Код делегата приложения:

-(bool)isIphoneX
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        CGSize screenSize = [[UIScreen mainScreen] bounds].size;
        if (screenSize.width == 812) // portrait height = 812
        {
            return true;
        }
        if([self isIphoneXR]) // Now in this game iPhoneXR, iPhoneXS Max = iPhoneX,
        {
            return true;
        }
    }
    return false;
}
-(bool)isIphoneXR
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        CGSize screenSize = [[UIScreen mainScreen] bounds].size;
        if (screenSize.width == 896 && screenSize.height == 414)
        {
            return true;
        }
    }
    return false;
}
Не добавляйте заставку iPhone6, iPhone7, iPhoneXR, iPhoneXSMax. Системное автоматическое масштабирование iphone5 для iPhone6, iPhone7 и т. Д. И iPhoneX для iPhoneXR, iPhoneXSMax.Вы должны использовать iPhone 5, iPhoneX splash

ПРИМЕЧАНИЕ: Я только что поддержал iPhoneX и поддержку всех устройств для моей старой игры ... Apple недавно одобрила это изменение ... успешно добавленоподдержка iPhoneX для cocos2d 2.2

...