【问题标题】:How to define PTM_RATIO according to iOS device如何根据 iOS 设备定义 PTM_RATIO
【发布时间】:2013-03-25 16:16:27
【问题描述】:

我正在使用 Cocos2D+Box2D 进行游戏开发。由于 Box2D 使用米而不是像素,我需要定义像素与米的比率。所以我在代码顶部定义了一个 PTM_RATIO:

define PTM_RATIO 32

但是 32 对于 iPhone

【问题讨论】:

  • 有什么问题?将 PTM_RATIO 设为常量并根据设备进行更改(例如 [[UIDevice currentDevice] userInterfaceIdiom])
  • 但是,等一下,如果我把它设为常数,那么我以后将无法更改它。常量是常量,正如它们的名字所暗示的那样。除此之外,我需要将 PTM_RATIO 放在一个头文件中。
  • 使其成为静态而不是 const

标签: ios cocos2d-iphone box2d


【解决方案1】:

顺便说一句,您可以将代码中出现的所有 PTM_RATIO 替换为

[Box2DHelper pixelsToMeterRatio]

这样您就可以毫无问题地在 Retina 分辨率和正常分辨率之间切换。

查看文件 http://subversion.assembla.com/svn/oiram/trunk/GoLeft/GoLeft/Box2DHelper.mm

要了解 CC_CONTENT_SCALE_FACTOR,请查看When to use CC_CONTENT_SCALE_FACTOR()?

更新:例如为 iPad 提供不同的 PTM

#define isIPad UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
#define PTM_RATIO (isIPad ? 64 : 32) 

【讨论】:

  • 正如您在提供的链接中看到的那样,PTM_RATIO 设置为 32。但是对于 iPAD,32 不合适。
  • 这是 kPointsToMeterRatio 不是像素到米
  • 这仅适用于视网膜和非视网膜显示配置。但 iPad 和 iPhone 的屏幕尺寸不同。所以固定 32 无济于事。
  • #define isIPad UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad #define PTM_RATIO (isIPad ? 64 : 32)
  • 是的,没错。我只是在寻找设备确定器指令。
猜你喜欢
  • 2014-06-06
  • 2013-05-22
  • 2018-11-16
  • 1970-01-01
  • 2012-02-29
  • 2012-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多