Cocos2dx。如何获得任何屏幕分辨率的像素长度为1厘米(在现实生活中)?

时间:2016-08-05 08:08:26

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

我在屏幕底部设置了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);

1 个答案:

答案 0 :(得分:0)

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开发中询问了所需的图像大小:

如您所知,不同尺寸的图像不是关于不同分辨率的游戏外观,您可以针对每种资产发布一种尺寸的游戏,并且您的游戏/应用在所有分辨率中看起来都很好,上面有解析政策的描述。 / p>

但我们需要为每个资产提供多个图像大小,以优化内存使用。在这种情况下(作为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 ...