【问题标题】:Cocos2dx. How to get length of 1cm(in real life) in pixel for any screen resolutions?Cocos2dx。对于任何屏幕分辨率,如何获得 1 厘米(在现实生活中)的像素长度?
【发布时间】:2016-08-05 08:08:26
【问题描述】:

我在屏幕底部设置了 admob 横幅。

我想抵消一切,以便横幅不会掩盖任何东西。

我不知道如何动态获取 admob 横幅的高度。

对于 iphone4,120 是 admob 的高度,但对于 iphone 6,它是 100。

我猜这与屏幕缩放有关,但我无法弄清楚。

我的屏幕在 AppDelegate.cpp 中是这样设置的

cocos2d::Size designResolutionSize = cocos2d::Size(1136, 768);

and

glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::NO_BORDER);

【问题讨论】:

    标签: cocos2d-iphone cocos2d-x cocos2d-x-3.0 cocos2d-android cocos2d-x-2.x


    【解决方案1】:

    cocos2dx 中没有像cm 这样的实数度量选项,实际上我们不需要它。

    但是 cocos2D-x 2.x 和 3.x 对于多分辨率问题(无论是 iDevices 还是 Android 设备)都有非常简单的解决方案,正如您在 Multi-resolution support document 中看到的那样。

    事实上你只需要设置你的DesignResolution然后想象你的目标设备会有这个分辨率。

    如果目标设备真的有这个分辨率(或任何其他具有相同比例的设备),cocos2d 将处理修复屏幕,您的游戏在所有设备上看起来都一样。

    当目标设备的比例不同时,您有很多选择 (policy) 来管理它。

    例如,如果您使用Exact fit 策略,cocos2d 将强制您的游戏(和设计)适应目标设备屏幕(没有黑色边框)。

    精确匹配

    整个应用程序在指定区域可见,无需尝试 以保留原始纵横比。可能会发生失真,并且 应用程序可能会出现拉伸或压缩。

    更多详情请查看official wiki

    除了以上所有单词之外,我发现This Link(来自 V-Play 引擎)及其Safe Zone 的定义非常有趣,我强烈建议您像我一样使用此页面的推荐分辨率值来进行工作。

    虽然此链接来自另一个引擎,但描述有助于您更好地理解一切。这是此页面术语与 cocos2d-x 术语之间的映射:

    V-Play::letterbox => Cocos2dx::显示全部

    V-Play::ZoomToBiggerSide => Cocos2dx::NoBorder


    另外,您确实询问了 cocos2dx 开发中所需的图像大小:

    如您所知,不同尺寸的图像与不同分辨率下的游戏外观无关,您可以为每种资产使用一种尺寸发布游戏,并且您的游戏/应用在所有分辨率下看起来都不错,并符合上述分辨率政策的说明。

    但我们需要为每个资产设置多个图像大小,以优化内存使用。在这种情况下(作为 cocso2dx 解决方案)我们检查设备大小并标记适当的图像集(每个图像集位于一个具有相同结构/不同大小的文件夹中,如 HDR/HD/SD)作为资源的默认文件夹:

        CCSize frameSize = pEGLView->getFrameSize();
    
        if (frameSize.height > mediumResource.size.height)
        { 
            searchPath.push_back(largeResource.directory); //mark HDR default
            pDirector->setContentScaleFactor(largeResource.size.height/designResolutionSize.height); //handle scaling because of different between our programming-design-resolution and artist-design-canvase-resolution
        }
        else ...
    

    【讨论】:

    • 感谢您的回答!
    猜你喜欢
    • 2011-11-10
    • 2011-04-10
    • 2011-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2013-09-30
    • 2014-10-25
    • 2014-11-23
    相关资源
    最近更新 更多