Ios 缩放非视网膜cocos2d iphone游戏,以适合视网膜iPad屏幕
我的cocos2d iphone 1.0.1游戏应该是通用的 目前,它已经在非视网膜iPad上运行良好。也就是说,没有“2x”按钮来缩放我的应用程序或任何东西。非视网膜iPad使用视网膜iPhone的高清图形,因此我不必专门为非视网膜iPad制作图形。我只需要重新定位我的精灵,但关键是非视网膜iPad是好的 现在是iPad视网膜 首先,我没有iPad视网膜图形,只有高清iPhone视网膜图形 我的目的是让retina iPad像非retina iPad一样显示游戏——也就是说,简单地缩放游戏(图形看起来仍然不错) 我想到的第一件事是修改导演。替换或推送场景时,场景的比例将为2.0 虽然这确实可以缩放所有游戏图形,它存在位置问题。基本上,如果在屏幕底部有一个精灵,当场景缩放时,它根本不会出现在屏幕上,因为缩放会将它进一步推到底部 我几乎是在模拟iPad运行iPhone应用程序时出现的“2x”按钮的功能。在这种情况下,技术上我希望retina iPad看起来与非retina iPad一模一样Ios 缩放非视网膜cocos2d iphone游戏,以适合视网膜iPad屏幕,ios,iphone,ipad,cocos2d-iphone,retina-display,Ios,Iphone,Ipad,Cocos2d Iphone,Retina Display,我的cocos2d iphone 1.0.1游戏应该是通用的 目前,它已经在非视网膜iPad上运行良好。也就是说,没有“2x”按钮来缩放我的应用程序或任何东西。非视网膜iPad使用视网膜iPhone的高清图形,因此我不必专门为非视网膜iPad制作图形。我只需要重新定位我的精灵,但关键是非视网膜iPad是好的 现在是iPad视网膜 首先,我没有iPad视网膜图形,只有高清iPhone视网膜图形 我的目的是让retina iPad像非retina iPad一样显示游戏——也就是说,简单地缩放游戏(图
我怎样才能做到这一点呢?无论采用哪种方式,都会遇到缩放(偏移量和字体)的问题,但这对我来说是可行的。我不在retina iPad上启用retina:)并使用my-hd纹理。同样对于背景纹理,我系统地使用1136x768图片。。。它们适用于所有设备(适用于3.5款iPhone和iPad)。唯一需要注意的是,如果您想要一个具有“边框”功能的背景纹理,那么每个设备类型都需要一个,并且在运行时有一些“if”语句来选择适当的纹理 这是我的AppController启动
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
[director_ enableRetinaDisplay:NO];
MPLOG(@"iPad device detected : forcing non-retina !");
[constants setAsIpad];
isIpadDevice = YES;
}
else {
isIpadDevice = NO;
if (![director_ enableRetinaDisplay:YES]) {
MPLOG(@"Retina Display Not supported");
}
else {
CGSize portrait = [CCDirector sharedDirector].winSize;
CGSize landscape = CGSizeMake(portrait.height, portrait.width);
if (landscape.width >= 568.) {
[constants setAsIphoneIpodTall];
} else {
[constants setAsIphoneIpodSmall];
}
}
}
MPLOG(@"Retina display : %@", NSStringFromBool(kIsRetina));
MPLOG(@"Scale factor : %.0f", director_.contentScaleFactor);
MPLOG(@"Screen size : {%.0f, %.0f}", kScreenWidth, kScreenHeight);
MPLOG(@"Tile size : {%.0f, %.0f}", kTileWidth, kTileHeight);
MPLOG(@"Battle mid point : %@", NSStringFromCGPoint(kBattleMidPoint));
MPLOG(@"Menu width : %4i", kMapRightMenuWidth);
// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
// Default texture format for PNG/BMP/TIFF/JPEG/GIF images
// It can be RGBA8888, RGBA4444, RGB5_A1, RGB565
// You can change anytime.
[CCTexture2D setDefaultAlphaPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
if (deviceTypeIpodTall == kDeviceType) {
[GESprite setDefaultPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
MPLOG(@"Pixel resolution : RGBA8888") ;
}
else {
if (isIpadDevice) {
[GESprite setDefaultPixelFormat:kCCTexture2DPixelFormat_RGBA8888];
MPLOG(@"Pixel resolution : RGBA8888") ;
}
else {
[GESprite setDefaultPixelFormat:kCCTexture2DPixelFormat_RGBA4444];
MPLOG(@"Pixel resolution : RGBA4444") ;
}
}
[GESprite defaultPixelFormat];
// If the 1st suffix is not found and if fallback is enabled then fallback suffixes are going to searched. If none is found, it will try with the name without suffix.
// On iPad HD : "-ipadhd", "-ipad", "-hd"
// On iPad : "-ipad", "-hd"
// On iPhone HD: "-hd"
CCFileUtils *sharedFileUtils = [CCFileUtils sharedFileUtils];
[sharedFileUtils setEnableFallbackSuffixes:NO]; // Default: NO. No fallback suffixes are going to be used
[sharedFileUtils setiPhoneRetinaDisplaySuffix:@"-hd"]; // Default on iPhone RetinaDisplay is "-hd"
[sharedFileUtils setiPadSuffix:@"-hd"]; // Default on iPad is "ipad"
[sharedFileUtils setiPadRetinaDisplaySuffix:@"-hd"]; // Default on iPad RetinaDisplay is "-ipadhd"
// Assume that PVR images have premultiplied alpha
[CCTexture2D PVRImagesHavePremultipliedAlpha:NO];
在“常量”中(哈哈哈)
在四处阅读时,我注意到有人说1.0.1不支持iPad视网膜。我认为这只有在我有iPad视网膜图形的情况下才重要,但我没有,所以我想使用1.0.1还是可以的。无论采用哪种方式,都会有缩放(偏移量和字体)的问题,但它对我有效。我不在retina iPad上启用retina:)并使用my-hd纹理。同样对于背景纹理,我系统地使用1136x768图片。。。它们适用于所有设备(适用于3.5款iPhone和iPad)。唯一需要注意的是,如果你想要一个具有“边框”功能的背景纹理,那么每种设备类型都需要一个,并且在运行时有一些“如果”语句来选择合适的纹理。@YvesLeBorg:“不要启用视网膜模式”-先生,我现在觉得非常愚蠢。我完全忘了你可以启用/禁用它。请回答这个问题。请记住,苹果要求应用程序支持视网膜分辨率,这可能意味着如果视网膜iPad上的图像质量看起来“太模糊”,该应用程序可能会被拒绝。@LearnCos2D:可能,但我尝试的一些东西与我的-hd东西的渲染效果不太接近。正如某位Stefen不久前指出的那样,苹果真的会检查除“苹果品牌正确性”之外的任何东西吗?我很快就会知道,即将推出一款游戏:)
+(void)setAsIpad {
kDeviceType = deviceTypeIpadNormal;
kIsIpad = YES;
kIsIphoneIpod = NO;
kIsIphoneIpodTall = NO;
kMapRightMenuWidth = 0;
kMapBottomMenuHeight = 0;
kTileHeight = 80.;
kTileWidth = 80.;
kScreenWidth = 1024;
kScreenHeight = 768;
kIsRetina = NO;
kScreenSize = CGSizeMake(kScreenWidth, kScreenHeight);
kScreenMidPoint = ccp(kScreenWidth / 2, kScreenHeight / 2);
kMidScreen = kScreenMidPoint;
kBattleMidPoint = ccp(kScreenWidth / 2 - kMapRightMenuWidth / 2, kScreenMidPoint.y);
}