Cocos2d-iPhone 和 iPhone X 分辨率



你能相信我们还在使用Cocos2d-iPhone吗?

有没有人可以修复它与最新的iPad和iPhone X一起使用?

我们的模式是风景。

  1. 如果 cocos2d 版本 1.0 - 2.1 则将其更新为 Cocos2d 2.2
  2. 在 Images.xcassets 中添加 iPhoneX 初始屏幕
  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; 
    

    }

    1. 使用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;
}
  1. 不要添加iPhone6,iPhone7,iPhoneXR,iPhoneXSMax启动画面。系统自动缩放iPhone5到iPhone6,iPhone7等和iPhoneX到iPhoneXR,iPhoneXSMax。你必须使用iPhone 5,iPhoneX飞溅

注意:我只支持iPhoneX和所有设备支持我的旧游戏...苹果最近批准了这一变化...成功将 iPhoneX 支持 添加到 cocos2d 2.2 中

Guru的解决方案是不完整的。他的解决方案以 2 (1624x750( 而不是 3 (2436×1125( 的比例加载 iPhone X 图像。因此,您需要将设备的比例设置为 3。在CCDirectiorIOS.m的setContentScaleFactor中,您必须添加:

if([UIScreen mainScreen].scale == 3.0f)
__ccContentScaleFactor = 3;

最新更新