anchorpoint 的位置關係

在 cocos2D 中,螢幕的預設是以螢幕左下角為原點 (0, 0),而加載的圖片(Sprite)、文字(Label) 則是預設以其正中心為原點,所以在使用上如果需要『對齊』某個位置時,常常就需要設定 anchorpoint

例如我們以下列的程式碼載入一張圖片到畫面中,我們希望圖片可以出現在畫面的右下角,但照這樣的寫法,螢幕左下角只會出現圖片的一角而已。
CCSprite *sprite = [CCSprite spriteWithFile:@"testPic.png"];
sprite.position = ccp(0, 0);
[self addChild:sprite];

那要如何透過 anchorpoint 做修正呢?
Anchorpoint 的使用方法為:
sprite.anchorpoint = ccp(x, y);

裡面的兩個參數一般設定為 0~1 之間,剛好可以組合出對應於圖片的四個角落,而預設的 anchorpoint 為 (0.5, 0.5) ,所以為圖片的正中心點。
再參考下列例子,首先將位置設定為螢幕的正中心,我們將透過設定不同的 anchorpoint ,來看看圖片將如何對齊。
首先是不特別設定,讓 anchorpoint 以預設的方式載入,果然,圖片的正中心會剛好就在螢幕的正中心。
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite *sprite = [CCSprite spriteWithFile:@"testPic.png"];
sprite.position = ccp(winSize.width/2, winSize.height/2);
[self addChild:sprite];

Screenshot_6
再來,試試將 anchorpoint 設為 (0, 0),結果,圖片的左下角對準在螢幕的正中心,也就是我們所設的 position 位置。
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite *sprite = [CCSprite spriteWithFile:@"testPic.png"];
sprite.anchorPoint = ccp(0, 0);
sprite.position = ccp(winSize.width/2, winSize.height/2);
[self addChild:sprite];

Screenshot_7

anchorpoint 為 (1, 0) 時,變成圖片的右下角對準螢幕中心。
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite *sprite = [CCSprite spriteWithFile:@"testPic.png"];
sprite.anchorPoint = ccp(1, 0);
sprite.position = ccp(winSize.width/2, winSize.height/2);
[self addChild:sprite];

Screenshot_8
最後,設定anchorpoint 為 (1, 1),理所當然地,圖片的右上角會對準螢幕的正中心。
CGSize winSize = [[CCDirector sharedDirector] winSize];
CCSprite *sprite = [CCSprite spriteWithFile:@"testPic.png"];
sprite.anchorPoint = ccp(1, 1);
sprite.position = ccp(winSize.width/2, winSize.height/2);
[self addChild:sprite];

Screenshot_9