Cocos Studio 1.1版本支持屏幕自适应,很好的功能。但是在使用过程中,不尽人意。
UIPanel panel = dynamic_cast<UIPanel>(m_pWidget->getChildByName(“Panel_20”));
CCSize winsize = CCDirector:: sharedDirector()->getWinSize();
panel->setSize(winsize);
这样才能起到真正的自适应作用。
问题来了
如果我设计时的分辨率是1024*768,在此分辨率以上的屏幕,都能正常显示。
但是如果运行的屏幕小于设计时的屏幕,就会出现很多元素显示不下,重叠起来了。
有人会想到
CCEGLView::sharedOpenGLView()->setDesignResolutionSize(designSize.width, designSize.height, kResolutionShowAll);
这样,自适应。确实可以,因为缩放了,代价是上面工具设置的自适应就失效了,会有黑边框等现象。
我自作聪明的想了个办法
// float ScaleX = (float)winsize.width/1024;
// float ScaleY = (float)winsize.height/768;
// float Scale = MIN(ScaleX,ScaleY);
// CCArray *pChildrenArray = panel->getChildren();
// UIWidget *child = NULL;
// CCObject *pObject = NULL;
// CCARRAY_FOREACH(pChildrenArray,pObject){
// child = (UIWidget *)pObject;
// if(!child)
// break;
//
// child->setScale(Scale);
// }
虽然是都能显示了,但是工具的坐标是在json里写死的。所以缩放完以后,还是有些坐标不能对应上。特别是非常小的分辨率,非常明显。
不知道要怎么弄了,问问大家平时是怎么做的屏幕适配的。