剛學cocos2dx。從小几何就沒學好。看到座標就犯暈,因此今天寫了個例子來觀察cocos2dx的座標是雜回事。 首先參考【cocos2d-x官方文檔】cocos2d-x座標系詳解:http://article.ityran.com/archives/3367ui
本篇文章例子主要是如何裁剪圖片。this
當錨點居中時,右下角的位置,0,0,圖片寬度/2,圖片高度/2。code
當錨點居中時,左下角的位置,0,0,-圖片寬度/2,圖片高度/2。orm
當錨點居中時,右上角的位置,0,0,圖片寬度/2,-圖片高度/2。圖片
當錨點居中時,右上角的位置,0,0,-圖片寬度/2,-圖片高度/2。文檔
ps:截圖:上 減(-),下 加(+),左 減(-),右 加(+)get
下圖片的位置! helloword.cpp, bool HelloWorld::init() 方法以下 <!-- lang: cpp -->it
bool HelloWorld::init(){ // 1. super init first if ( !CCLayer::init() ) { return false; } // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object CCMenuItemImage *pCloseItem = CCMenuItemImage::create( "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback) ); pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) ); // create menu, it's an autorelease object CCMenu* pMenu = CCMenu::create(pCloseItem, NULL); pMenu->setPosition( CCPointZero ); this->addChild(pMenu, 1); // ask director the window size CCSize size = CCDirector::sharedDirector()->getWinSize(); CCLayerColor *col = CCLayerColor::create(ccc4(128,128,128,255)); this->addChild(col, -10); // 居中原圖 CCSprite *pCoSprite = CCSprite::create("Icon-72.png"); CCSize spriteSize = pCoSprite->getContentSize(); pCoSprite->setPosition( ccp(size.width/2,size.height/2)); this->addChild(pCoSprite,-1); //右下 ,裁剪時,假如圖片的錨點爲(0,0),右下角座標:0,0,寬,高 CCSprite *pRectSpriteRB = CCSprite::create("Icon-72.png",CCRect(spriteSize.width/2, spriteSize.height/2, spriteSize.width/2, spriteSize.height/2)); pRectSpriteRB->setPosition(ccp(size.width/2+spriteSize.width+pRectSpriteRB->getContentSize().width/2,size.height/2-spriteSize.height/2-pRectSpriteRB->getContentSize().height/2)); this->addChild(pRectSpriteRB); //右下原圖 CCSprite *pCoSpriteRB = CCSprite::create("Icon-72.png"); pCoSpriteRB->setPosition( ccp(size.width/2+spriteSize.width,size.height/2-spriteSize.height/2)); this->addChild(pCoSpriteRB,-1); // 左下 ,裁剪時,假如圖片的錨點爲(0,0),左下角座標:0,0,-寬,正高 CCSprite *pRectSpriteLB = CCSprite::create("Icon-72.png",CCRect(spriteSize.width/2, spriteSize.height/2, -spriteSize.width/2, spriteSize.height/2)); pRectSpriteLB->setPosition(ccp(size.width/2-spriteSize.width,size.height/2-spriteSize.height/2)); this->addChild(pRectSpriteLB); CCSprite *pCoSpriteLB = CCSprite::create("Icon-72.png"); pCoSpriteLB->setPosition( ccp(size.width/2-spriteSize.width,size.height/2-spriteSize.height/2)); this->addChild(pCoSpriteLB,-1); // 右上,裁剪時,假如圖片的錨點爲(0,0),右上角座標:0,0,寬,-高 CCSprite *pRectSpriteRU = CCSprite::create("Icon-72.png",CCRect(spriteSize.width/2, spriteSize.height/2, spriteSize.width/2, -spriteSize.height/2)); pRectSpriteRU->setPosition(ccp(size.width/2+spriteSize.width,size.height/2+spriteSize.height)); this->addChild(pRectSpriteRU); // 左上,裁剪時,假如圖片的錨點爲(0,0),左上角座標:0,0,-寬,-高 CCSprite *pRectSpriteLU = CCSprite::create("Icon-72.png",CCRect(spriteSize.width/2, spriteSize.height/2, -spriteSize.width/2, -spriteSize.height/2)); pRectSpriteLU->setPosition(ccp(size.width/2-spriteSize.width,size.height/2+spriteSize.height)); this->addChild(pRectSpriteLU); return true; }
下圖爲執行效果 io