2

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

1 回答 1

0

cocos2dx 中没有类似实度量的cm选项,实际上我们不需要它。

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

事实上,您只需要设置您的DesignResolution,然后想象您的目标设备将具有此分辨率。

如果目标设备确实具有此分辨率(或任何其他具有相同比率的设备),cocos2d 将处理修复屏幕,并且您的游戏在所有设备上看起来都相同。

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

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

完全适合

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

有关更多详细信息,请查看官方 wiki

除了以上所有文字,我发现这个链接(来自 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 ...
于 2017-02-03T09:32:56.713 回答