【问题标题】:Adaptive Positioning Based on iOS Device基于iOS设备的自适应定位
【发布时间】:2012-10-03 13:11:09
【问题描述】:

几个月前我制作了一款 iPhone 游戏,现在正尝试将其作为通用应用程序移植到带有 Cocos2D 的 iPad 和 iPhone 5 上。我想知道是否有一种简单的方法可以根据运行游戏的设备来确定对象应该放置在哪里。

我可以使用 if 语句来确定游戏在哪个设备上运行,因此当我为设备获得正确尺寸的图像时,我可以为每个对象设置单独的位置,但似乎会有一个数学公式将允许我使用更少的代码。显然,像全屏背景这样的东西非常简单,因为它只需要居中:

[background setPosition:CGPointMake(screenSize.width/2,screenSize.height/2)];

我不知道如何将旧款 3.5 英寸、640 x 960 分辨率 iPhone 上的 X = 144 & Y = 330 按钮调整为 iPad 或 iPhone 5 分辨率。

如果它能让我的生活更轻松,我愿意使用更新版本的 iOS,但因为我没有使用任何 Apple 的对象,所以我不知道这是否可能。

也许这甚至不可能,因为 iPhone 和 iPad 版本的按钮大小不同,但我想我会问。

【问题讨论】:

    标签: ios dynamic cocos2d-iphone positioning


    【解决方案1】:

    是的,我通常面临同样的问题, 但如果它只是一个静态对象放置 我会为每个对象拥有relative coordinates instead of absolute 然后使用屏幕尺寸正确放置它们 所以你可能想使用如下函数:

    -(CGPoint) relativeToScreen:(CGPoint) p { 
        return ccp(screenSize.width * p.x, screenSize.height * p.y) 
    }
    

    其中 0.0

    不要忘记你的anchorPoint,因为节点位置也是基于它的

    我希望你已经发现 cocos2d 已经代替你进行图像选择, 你只需要为你的图片设置正确的后缀:-hd, -ipad, -ipadhd

    【讨论】:

      【解决方案2】:

      对于 iphone5 分辨率,我将 hud 按钮放置在相对于屏幕尺寸的位置。与您为背景所做的非常相似。因此,例如,我想在左上角放置一个暂停按钮,我会这样放置:

      [pauseButton setPosition:CGPointMake(0.0f + 30.0f, screenSize.height - 50.0f)];
      

      对于 ipad,它变得非常棘手。我实施的懒惰方法是使用内容比例因子并放大所有内容并使用“死”边框来补偿 ipad 的屏幕比例。不是最好的,但至少你可以为 ipad 重复使用所有相同的资产。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-06
        • 2022-12-15
        • 2011-10-08
        • 2016-11-20
        相关资源
        最近更新 更多