CCNode類的setPosition,getPosition函數如果是一個Node的Child則獲取的座標就是該Node的本地座標
另一個關鍵問題就是在cocos2d-x裏就是各種對象的大小問題。因爲在cocos2d-x裏CCNode對象有縮放的方法setScaleX和setScaleY。所以在獲取對象大小的時候必須根據情況明確指定獲取對象原始大小,還是縮放後的大小。當然cocos2d-x裏提供了對應函數來完成這些操作:
getContentSize函數來獲得節點原始的大小。只是邏輯尺寸,不是像素
boundingBox函數來獲得經過縮放和旋轉之後的外框盒大小。
getContentSizeInPixels獲得的是像素點大小
像素點和邏輯點關係:邏輯點大小 = 像素大小/contentScaleFactor.
getVisibleSize:默示獲得視口(可視區域)的大小,若是DesignResolutionSize跟屏幕尺寸一樣大,則getVisibleSize便是getWinSize。
getVisibleOrigin:默示可視區域的出發點座標,這在處理懲罰相對地位的時辰很是有效,確保節點在不合辨別率下的地位一致。
getVisibleOrigin:默示可視區域的出發點座標,這在處理懲罰相對地位的時辰很是有效,確保節點在不合辨別率下的地位一致。
座標轉換:
GL座標系,cocos2d-x默認座標系:
CCPoint CCDirector::convertToGL(const CCPoint& uiPoint)
{
CCSize s = m_obWinSizeInPoints;
float newY = s.height - uiPoint.y;
}
屏幕座標系: 默認原點在左上角
CCPoint CCDirector::convertToUI(const CCPoint& glPoint)
{
CCSize winSize = m_obWinSizeInPoints;
float oppositeY = winSize.height - glPoint.y;
return ccp(glPoint.x,oppositeY);
}
兩種座標的X方向沒有變,只變了Y方向,cocos2d-x裏默認的GL座標系,即左下角爲原點ccp(0.0f,0.0f)