關於cocos2d-x 3.x Layer 與 Scene 錨點更改問題
***************************************轉載請註明出處:http://blog.csdn.net/lttree********************************************
這幾天,在做個2048玩(已經out了的遊戲)
在其中要在一個場景設定一個格子圖層,
但是錨點怎麼都設定不對,於是乎,上網搜尋+自己實踐=發現:
原來Layer 與 Scene 的錨點預設是無法更改的。
解決方法:
呼叫Node裡的一個函式:
ignoreAnchorPointForPosition(bool)
看一下API:
好吧,如果英語有些障礙,額。。。這裡有3.0版本的中文版API(鼓勵看英文版):
恩,引數預設為true。
只需要把這個改成false,即可更改錨點的位置。
例如:
auto colorBox = LayerColor::create( Color4B(170,170,170,255));
colorBox -> ignoreAnchorPointForPosition(false);
colorBox -> setAnchorPoint(Point(0.5,0.5));
colorBox -> setPosition(Point(座標位置));
this ->addChild(colorBox);
怎麼確定錨點設定在哪?
將圖片擬化為一個1X1的小格子,
0,0 左下角
1,1 右上角
1,0 右下角
0,1 左上角
0.5 0.5 正中央
而且,node也提供了 isIgnoreAnchorPointForPosition 方法,
以供判斷該Layer或者Scene的錨點是否可以被更改。
當然,通過這個方法(ignoreAnchorPointForPosition)
你也可以設定 Sprite的物件 錨點為0,0,而且不允許更改。
例如:
auto sprite = Sprite::create("HelloWorld.png"); sprite->ignoreAnchorPointForPosition(true); sprite->setAnchorPoint(Point(1,0)); sprite->setPosition(Point(GAME_SCREEN_WIDTH/2,GAME_SCREEN_HEIGHT/2)); this->addChild(sprite, 0);
其實,設定錨點的語句是沒有用的,
但是如果ignoreAnchorPointForPosition改為false,
就可以改變錨點位置了。
或許,你會問:設定Sprite錨點固定為0,0 有啥用?
我: 我也不知道的說。。。我只能找到有這個用法,具體可以幹什麼,看你的idea了~
要注意喲:
——如果設定為true,就表示錨點預設0,0 不能更改,
——如果設定為false,就表示錨點可以更改,設定就行了,
因此,不能這個方法無法進行這樣的操作:設定一個物件的錨點,並不允許更改這個錨點。
只要不允許更改錨點,錨點只能為0,0(左下角)!
***************************************轉載請註明出處:http://blog.csdn.net/lttree********************************************