当我第一次开始编程iOS(使用Cocos2d)时,我使用了一堆基于320x480屏幕尺寸的硬编码坐标。我刚刚意识到我需要至少包括一个基本版本的iPad和iPad mini。
我读过这些:
cocos2d(但我不确定这是不是最好的方法?) cocos2d:Convert iPhone App to Universal App
转换坐标: Convert coordinates from iPhone screen size to iPad screen size
将iphone转换为ipad: http://iphonedevelopment.blogspot.com/2010/04/converting-iphone-apps-to-universal.html
使用iOS / Cocos2D坐标进行未来编码的最佳做法是什么?我应该做什么
#define SPACE_SHIP_X_IPAD 384
#define SPACE_SHIP_X_IPHONE 160
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
`[ship.setPosition ccp:(SPACE_SHIP_X_IPHONE,0)];`
} else {
`[ship.setPosition ccp:(SPACE_SHIP_X_IPAD,0)];`
}
(顺便说一下,有人知道如何用“#”符号格式化这段代码,plz教我如何格式化上面的代码?)
建议我创建2个不同的应用程序 - 一个用于iphone,另一个用于iPad?或者只有1个app的通用方法,然后在我提交给Appstore时选择分发类型?
非常感谢任何帮助。我会赞成所有好的尝试
答案 0 :(得分:4)
看起来您的方法过于复杂。制作通用应用程序通常不涉及硬编码位置值,而是根据设备的边界计算这些位置值。
例如:
//Button in center for universal
CGPoint buttonOffset = CGPointMake( ([[UIScreen mainScreen] bounds].size.width - button.frame.size.width) / 2, ([[UIScreen mainScreen] bounds].size.height - button.frame.size.height) / 2);
button.frame = CGRectMake(buttonOffset.x, buttonOffset.y, button.frame.size.width, button.frame.size.height);
使用类似的概念创建位置相对于屏幕边界的按钮(或船只)。这将为您节省大量时间和悲伤。
需要注意的一点是屏幕的“边界”不会影响设备方向。如果您想支持多个方向,您会发现创建一个实用程序方法来为您处理该逻辑很有用。
类似的东西:
+ (CGSize) deviceSize {
CGSize size;
if(UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation])){
size = CGSizeMake([[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width);
} else {
size = CGSizeMake([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height);
}
return size;
}
我知道您需要一个简单的解决方案,因此您不必更改所有值,但我建议您咬住子弹并更改值。从长远来看,它会对你有很大帮助。不仅适用于此应用程序,而且该实践将有助于您将来创建的任何应用程序。
建议您为通用创建两个不同的应用程序吗?不,不建议这样做。您可以在创建xcode项目时选择“通用”,也可以在现有项目中更改它。您也不需要创建两个构建或二进制文件。 Apple会认为它是通用的,并且可以在商店中为所有设备提供。但是,您需要创建多个版本的闪屏以适应不同的屏幕尺寸和像素密度。
Mac应用程序的版本与iPhone和iPad的应用程序商店的分销渠道相同吗?排序...您可以部署到应用程序商店,因为您可以打包和获得更多自由自己分发OSX二进制文件 - 但是你必须创建一个单独的应用程序,因为你很可能会使用mac不支持的CocoaTouch库。您将希望保留不使用CocoaTouch的功能,例如渲染和游戏逻辑。如果要部署到OSX,大屏幕尺寸将是您最不关心的问题。优点:更广泛的受众。缺点:在构建应用程序/游戏时需要进行大量规划,以便尽可能多地重用代码并满足所有屏幕。
只是为了确保 - 我的应用程序文件(不使用任何特定于iphone的电话)将在iPod和iPad Mini上运行而无需任何额外的工作,对吧?嗯...... em>一些额外工作对于主屏幕图标和启动画面的一些额外图像资源,您将很高兴。
答案 1 :(得分:1)
我使用通过iCloud共享的数据文件执行此操作,以便数据显示在两个设备上的正确位置... X * = 768/320和Y * = 1024 / 480.要从iPad分辨率返回iPhone,只需分而不是乘。它简单而精确。然后,如果需要,记录您的数据配置的坐标集。