1. 程式人生 > >cocos2d-x getVisibleSize , getVisibleOrigin 和坐標位置

cocos2d-x getVisibleSize , getVisibleOrigin 和坐標位置

opengl es log DC detail callback reat origin 控件 instance

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

cocos2d-x getVisibleSize , getVisibleOrigin 和坐標位置