刚学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