首页 > 代码库 > 关于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********************************************

关于cocos2d-x 3.x Layer 与 Scene 锚点更改问题