游戏在屏幕适配中采用ShowAll策略在不同分辨率下保持设计画面比例,固定了设计分辨率大小,使得设计和制作不再考虑适配问题。
在制作上可以使用具体的数值摆放精灵位置,不会因为实际屏幕大小宽高比而使内部元素相对位置关系出现混乱。
但是采用showall必然会导致四周出现黑边的情况,下面使用图片填充黑边,解决这个问题。
#include "EdgeMaskLayer.h"
USING_NS_CC;
EdgeMaskLayer * EdgeMaskLayer::create()
{
EdgeMaskLayer *ret = new (std::nothrow) EdgeMaskLayer();
if (ret && ret->init())
{
ret->autorelease();
return ret;
}
else
{
CC_SAFE_DELETE(ret);
return nullptr;
}
}
void EdgeMaskLayer::onBeginDraw()
{
GLView* openGLView = this->_director->getOpenGLView();
Size frameSize = openGLView->getFrameSize();
glViewport(0, 0, (GLsizei)(frameSize.width), (GLsizei)(frameSize.height));
}
void EdgeMaskLayer::onEndDraw()
{
const auto& vp = Camera::getDefaultViewport();
glViewport(vp._left, vp._bott