getWinSize : 获取设备屏幕大小.
getVisibleSize:获得视口(可视区域)的大小,若是DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize便是getWinSize。
getVisibleOrigin:获得可视区域的出发点坐标,在处理相对位置时,确保节点在不同分辨率下的位置一致。
Cocos2D-x以OpenGL和OpenGL ES为基础,所以自然支持OpenGL坐标系。该坐标系原点在屏幕左下角,x轴向右,y轴向上。
经简单测试:
1 .以480*320 为例,
在iphone4/iphone4s上,调用getVisibleSize() 获取的大小为(480,320);调用getVisibleOrigin() 获取的大小为(0,0);
在iphone5s(1130*640)上,调用getVisibleSize() 获取的大小为(480,270)(得到了相应的缩放);调用getVisibleOrigin() 获取的大小为(0,24.);
这对于设置控件的位置有些帮助。
2.控件位置,在cocos2d-x中anchorpoint和position紧密联系,
//获取坐标系界面的屏幕可见区域
Size visibleSize = Director::getInstance()->getWinSize();
//获取屏幕大小
Size visibleSize1 = Director::getInstance()->getVisibleSize();//表示获得视口(可视区域)的大小,如果DesignResolutionSize跟屏幕尺寸一样大,则getVisibleSize等于getWinSize。
//原点位置
Point origin = Director::getInstance()->getVisibleOrigin();//表示可视区域的起点坐标,这在处理相对位置的时候非常有用,确保节点在不同分辨率下的位置一致
//创建一个关闭按钮,参数分别为,正常状态显示的图片,选中状态的图片,操作调用的方法即调用MainScene的menuCloseCallback方法
auto closeItem = MenuItemImage::create("setting.png",
"setting.png",
CC_CALLBACK_1(MainScene::menuCloseCallback, this));
//设置关闭按钮的位置为视图的右下方
closeItem->setPosition(origin);//适应不同分辨率,以AnchorPoint(Vec2(0, 0))为例,位置为左下角。
closeItem->setAnchorPoint(Vec2(0, 0));
closeItem->setColor(Color3B(250, 100, 0));
closeItem->setContentSize(Size(43,43));
auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Point::ZERO);
//这里相当于把menu作为父view,而closeItem作为subview ,而subview的closeItem的位置是相对于menu的position的相对位置。以这里为例,由于未设置,menu的默认大小为getWinSize,menu的默认anchorpoint为(0.5,0.5),menu的position由于为(0,0),所以closeItem的位置为(0,0),假设menu的position由于为(240,160),则closeItem的位置为(0 + 240,0 + 160),
//把菜单添加到层中
this->addChild(menu, 1);
Sprite *visibleS = Sprite::create("setting.png" , Rect(origin,44,44));//这里的origin保证了在不同分辨率的情况下(setAnchorPoint(Vec2(0, 0))),该精灵始终处于左下角。
visibleS->setAnchorPoint(Vec2(0, 0));
visibleS->setColor(Color3B(100, 250, 0));
this->addChild(visibleS);
相关链接:
http://www.tairan.com/archives/3367/
http://blog.csdn.net/lnb333666/article/details/16886623
原文地址:https://www.cnblogs.com/AndyChen1/p/9030603.html