Cocos2dx開發之錨點例項

2021-06-22 22:32:15 字數 2664 閱讀 6337



錨點概念

由於我們在使用cocos2dx進行開發時,一般都是在場景中載入精靈來實現的,而精靈上掛載的往往都不是乙個點而是一張資源,那麼我們在場景中設定這個精靈的位置時,對這張資源來說是應該把這張資源中的哪個點與我們設定的點對齊呢?這裡就引出了錨點這個概念,我們通過設定錨點來確定資源上哪個點與我們設定位置點對齊。簡而言之,錨點確定精靈自己在父節點的載入位置。

幾何圖形說明

上面的文字描述可能不太容易理解,下面作者發揚嚴謹的科研風格,繪圖做以下說明:

假設我們要把乙個精靈載入到場景中去,這個精靈上使用的資源是一張四邊形,如下圖所示

圖 1ok,當我們使用cocos2dx下對應的api要給這個精靈設定乙個特定的位置時,設定的結果是什麼樣的呢?這就與我們給定這個精靈的錨點有關,設定不同的錨點,載入結果也會不同。錨點的設定可以根據你的喜好隨意設定,但是一般來說常用的錨點有哪些呢?如下圖紅色圈所表示的——左下角、左上角、右上角、右下角,在cocos2dx中預設使用的錨點座標是四邊形的幾何中心點。

圖 2

在cocos2dx中,我們可以使用setanchorpoint這個介面來設定錨點,引數是乙個cocos2d::ccpoint型別,這個點是(0.0f,0.0f)~(1.0f,1.0f)之間的乙個值。

錨點

demo

演示我們在下面這個場景中來做測試,首先如下圖所示,我們在這個場景中新增乙個精靈a作為背景精靈:

載入**: //

新增背景資源

圖 3然後我們在這個精靈上開始增加另外乙個精靈b作為測試精靈。

好,我們把測試精靈b的錨點設定為左下角(0.0f,0.0f),然後載入到北京精靈a之上,如下圖所示:

載入**: //

載入測試精靈

cocos2d::ccsprite* ptestsprite = cocos2d::ccsprite::create("bubble.png");

cc_break_if( !ptestsprite );

ptestsprite->setanchorpoint(ccp(0.0f,0.0f));

ptestsprite->setposition(ccp(0.0f,0.0f));

pbg->addchild(ptestsprite);

結果展示:

圖 4

再看下面,我們把測試精靈b的錨點設定為中間(cocos2dx中預設錨點也是如此),載入結果:

載入**: //

載入測試精靈

cocos2d::ccsprite* ptestsprite = cocos2d::ccsprite::create("bubble.png");

cc_break_if( !ptestsprite );

ptestsprite->setanchorpoint(ccp(0.5f,0.5f));

ptestsprite->setposition(ccp(0.0f,0.0f));

pbg->addchild(ptestsprite);

載入結果如下

圖 5

下來呢,再把測試精靈b的錨點設定為右上角(1.0f,1.0f),載入結果如下:

載入**:

// 載入測試精靈

cocos2d::ccsprite* ptestsprite = cocos2d::ccsprite::create("bubble.png");

cc_break_if( !ptestsprite );

ptestsprite->setanchorpoint(ccp(1.0f,1.0f));

ptestsprite->setposition(ccp(0.0f,0.0f));

pbg->addchild(ptestsprite);

載入結果展示:

圖 6

nice,至此,我們可以看到,測試精靈b錨點設定不會影響它在背景精靈上的位置(這個位置只是根據setposition介面來改變),只會影響測試精靈b本身的資源上的哪一點來與這個位置對齊。

Cocos2D X掃盲之座標系 錨點

一 引言 在cocos2d x的開發過程中,經常會碰到設定精靈位置的問題。而設定位置的過程,涉及到兩個問題 第一是座標系,包括原點的位置 x y座標軸的方向燈 第二是基準點 cocos2d x中叫錨點 即精靈旋轉的時候,以哪個點為軸心 下面我們將逐一來分析這兩個問題。二 正文 1.座標系 cocos...

Cocos2D X掃盲之座標系 錨點

一 引言 在cocos2d x的開發過程中,經常會碰到設定精靈位置的問題。而設定位置的過程,涉及到兩個問題 第一是座標系,包括原點的位置 x y座標軸的方向燈 第二是基準點 cocos2d x中叫錨點 即精靈旋轉的時候,以哪個點為軸心 下面我們將逐一來分析這兩個問題。二 正文 1.座標系 cocos...

cocos2dx例項開發之2048(新增動畫版)

網上找了好多教程寫2048,不過都沒有實現卡片的移動動畫,自己寫了乙個不太完美的帶動畫版。開發步驟 1,設計乙個cardsprite類。2,設計主遊戲場景gamescene,實現遊戲邏輯,新增動畫邏輯。3,新增遊戲勝利或者遊戲失敗的層,新增歷史分數儲存。4,新增聲音等其他元素,專門弄了乙個聲音預載入...