1. 程式人生 > >關於cocos2d-x 3.x Layer 與 Scene 錨點更改問題

關於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********************************************