研究了一天都没有一个头绪的,就是这winSize和visibleSize(framSize客串)。
看了csdn上的一篇博文,里面说:
frameSize就是手机实际的分辨率
winSize就是游戏的设计分辨率
visibleSize就是winSize在手机屏幕中实际显示的部分的分辨率
可是,当我实际测试的时候,我发现三者都很混乱,我已经感觉不会再爱了!!
我通过修改AppDelegate.cpp中的代码来进行测试:
glview->setDesignResolutionSize(600, 800, ResolutionPolicy::SHOW_ALL);
然后再通过一个TextField控件来显示三者的数据:
auto vx = visibleSize.width;
auto vy = visibleSize.height;
auto wx = Director::getInstance()->getWinSize().width;
auto wy = Director::getInstance()->getWinSize().height;
auto fx = Director::getInstance()->getOpenGLView()->getFrameSize().width;
auto fy = Director::getInstance()->getOpenGLView()->getFrameSize().height;
textfield = TextField::create();
addChild(textfield,3);
textfield->setAnchorPoint(Vec2(0, 0));
textfield->setPosition(Vec2(origin.x + visibleSize.width / 2 - 40, 20));
textfield->setSize(Size(winSize.width - 40 - 100, winSize.height - 100));
textfield->ignoreContentAdaptWithSize(false);
textfield->setTextColor(Color4B::GREEN);
textfield->setString(String::createWithFormat("visible size\n%f, %f\nwinsize\n%f, %f\nframe size\n%f, %f", vx, vy, wx, wy, fx, fy)->getCString());
下面展出我的测试结果:
EXACT_FIT
FIXED_HEIGHT
FIXED_WIDTH
NO_BOARDER
SHOW_ALL
我的手机分辨率是720P(1280 x 720)
从结果看到:
首先,frame size 并不是手机的分辨率,而一直是我的设计分辨率,600 x 800
然后
FIXED_HEIGHT中,visibleSize居然是600x800而winSize却是450x800,不是说winSize是画布大小,而visibleSize是可见区域吗?不应该是两个数据颠倒一下?
FIXED_WIDTH中,visibleSize是600x800,而winSize是600x1067,可是我的画布一共也就600x800好吗……
更加无法理解的是NO_BORDER,visibleSize居然是375x500,可是从运行结果来看明明上下边都显示出来了好吗,为什么是这个分辨率,而是长宽比也与720P的手机分辨率不一样啊!
我真是醉了!先去睡了!望高手帮我解惑啊解惑!!!





有人吗?

我也感觉,主要是也不发一个有关的官方详细教程。