cocos2d的anchor小總結和小糾結

2021-06-05 19:08:47 字數 1184 閱讀 2996

posted on 2011-06-09 20:13 

justinwong 閱讀(281) 

編輯收藏

自我感覺對anchor的理解沒問題了,但今天被另外乙個問題糾結進去了,這裡先做小總結,後面會說到那個問題。

假設有乙個ccsprite a,則:

1. anchor是乙個cgpoint,取值在(0.0f, 0,0f) 到 (1.0f, 1.0f)之間。

2. (0.0f, 0.0f)是這個ccsprite矩形區域的左下角,(1.0f, 1.0f)是右上角。

3. anchor決定了這個sprite的position指的是中哪個部分的位置,比如anchor在(0.0f, 0.0f),position在(100, 100),則這個sprite的左下角將被放在(100, 100)。

4. anchor決定對這個sprite進行旋轉的原點。

5. anchor決定了對這個sprite進行縮放的原點。

問題來了,假設有乙個ccsprite b,且a是b的child。

那麼當a.position為(0,0) ,且a和b的anchor都是(0.5f, 0.5f)的時候,a會在b的什麼位置呢?

廢了半天勁,其實就是乙個概念上被混淆了,那就是我理所應當的認為b的anchor會是a的position的原點(基點),而實際a的position的原點不受b的anchor的影響,一律都在左下角。

這也就是為什麼,我們要在layer中心建立乙個sprite時,要計算winsize,並把position設定為winsize寬高為一半了。

今天使用了大量cclayercolor為容器巢狀做ui,發現了另外一些問題,就是cclayer的anchor與ccsprite的區別:

1. cclayer的anchor不會影響這個layer的position是自己的哪個角放在父容器上,也就是說,無論cclayer的anchor為何值,position的值都是這個cclayer的左下角的位置。

2. 除了1以外,cclayer的anchor的功能和ccsprite相同。

下面是嘗試用的**,通過修改幾個引數值可以很快的了解anchor:

-(id

) init

return

self;

}

cocos2d的anchor小總結和小糾結

自我感覺對anchor的理解沒問題了,但今天被另外乙個問題糾結進去了,這裡先做小總結,後面會說到那個問題。假設有乙個ccsprite a,則 1.anchor是乙個cgpoint,取值在 0.0f,0,0f 到 1.0f,1.0f 之間。2.0.0f,0.0f 是這個ccsprite矩形區域的左下角...

cocos2d實現語音 Cocos2d 聲音API

param url 聲音路徑 cc.audioengine.playmusic url loop 停止背景 param releasedata 是否釋放聲音資料,預設為false cc.audioengine.stopmusic releasedata 暫停背景 cc.audioengine.pau...

cocos2d筆記 cocos2d的單例模式

cocos2d充分使用了單例設計模式,這裡有必要提及它是因為它是經常是討論熱點。大體上說,乙個singleton是乙個類,它在應用使用期中僅僅例項化一次。為了確保如此,就要使用乙個既建立又訪問此物件例項的靜態方法。因此,你不使用alloc init或者靜態自動釋放初始化器 static autore...