首页 > 代码库 > 关于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 锚点更改问题