Cocos2d-iPhone 和 iPhone X 分辨率
Cocos2d-iPhone and iPhone X resolution
你能相信我们还在使用 Cocos2d-iPhone 吗?
有没有人有办法让它与最新的 iPad 和 iPhone X 一起工作?
我们的模式是风景。
- 如果 cocos2d 版本 1.0 - 2.1 则将其更新为 Cocos2d 2.2
- 在Images.xcassets
中添加iPhoneX闪屏
在 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
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;
}
使用 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。必须使用iPhone5,iPhoneX splash
注意: 我刚刚支持 iPhoneX 和我的旧游戏的所有设备支持...Apple 最近批准了此更改...已成功添加 iPhoneX 支持 cocos2d 2.2
Guru 的解决方案不完整。他的解决方案以 2 (1624x750) 而不是 3 (2436×1125) 的比例加载 iPhone X 图像。因此,您需要将设备的比例设置为 3。在 CCDirectiorIOS.m 的 setContentScaleFactor 中,您必须添加:
if([UIScreen mainScreen].scale == 3.0f)
__ccContentScaleFactor = 3;
你能相信我们还在使用 Cocos2d-iPhone 吗?
有没有人有办法让它与最新的 iPad 和 iPhone X 一起工作?
我们的模式是风景。
- 如果 cocos2d 版本 1.0 - 2.1 则将其更新为 Cocos2d 2.2
- 在Images.xcassets 中添加iPhoneX闪屏
在 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 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;
}
使用 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。必须使用iPhone5,iPhoneX splash
注意: 我刚刚支持 iPhoneX 和我的旧游戏的所有设备支持...Apple 最近批准了此更改...已成功添加 iPhoneX 支持 cocos2d 2.2
Guru 的解决方案不完整。他的解决方案以 2 (1624x750) 而不是 3 (2436×1125) 的比例加载 iPhone X 图像。因此,您需要将设备的比例设置为 3。在 CCDirectiorIOS.m 的 setContentScaleFactor 中,您必须添加:
if([UIScreen mainScreen].scale == 3.0f)
__ccContentScaleFactor = 3;