cocos2d中Layer的默认锚点是left、buttom,其他的节点(node)是中点。至于坐标原点是父节点left、buttom。(这里要注意,并不是所有的节点的坐标原点都是父节点的左下角,比如:cc.MenuItem是以cc.Menu的锚点为原点)
效果如图:
效果如图:
初始位置如图:
效果如图:
效果如图:
添加三个layer:
var layer1=cc.LayerColor.create(cc.c4(255,255,0,255),320,480);
var layer2=cc.LayerColor.create(cc.c4(255,0,0,255),100,100);
var layer2_1=cc.LayerColor.create(cc.c4(0,255,0,255),50,50);
this.addChild(layer1);
layer1.addChild(layer2);
layer2.addChild(layer2_1);
效果如图:
增加一行代码,改变layer2的位置:
layer2.setPosition(cc.p(100,100));
效果如图:
改变一下layer2_1的位置:
layer2_1.setPosition(cc.p(25,25));
效果如图:
可以看出,layer默认的锚点是left、buttom,父节点的left、buttom为坐标原点。默认Layer不能改变锚点的,如果想改变锚点的话,需要这样做:layer.ignoreAnchorPointForPosition(false);
现在看看Sprite的定位。
新建一个Sprite:
var jetSprite=cc.Sprite.create("Resources/jet.png");
layer1.addChild(jetSprite);
初始位置如图:
看出Sprite的锚点是它的中心位置,坐标原点是父元素的左下角。
改一下锚点:
jetSprite.setAnchorPoint(cc.p(1,0));
效果如图:
诶!!!不见了???,因为默认的位置是(0,0),所以飞机应该是在某个地方。
设置一下飞机的位置:
jetSprite.setPosition(cc.p(100,0));
效果如图:
jetSprite.setPosition(cc.p(100,0));的意思是向右移动100,结果看出,jetSprite.setAnchorPoint(cc.p(1,0));将锚点设置成right、bottom
sprite的锚点设置
jetSprite.setAnchorPoint(cc.p(0.5,0.5));
默认锚点:中心
jetSprite.setAnchorPoint(cc.p(0,0));
锚点:left、bottom(左下角)
jetSprite.setAnchorPoint(cc.p(0,1));
锚点:left、top(左上角)
jetSprite.setAnchorPoint(cc.p(1,0));
锚点:right、bottom(右下角)
jetSprite.setAnchorPoint(cc.p(1,1));
锚点:right、top(右上角)
我觉得用cc.p(x,x)这样设置锚点有点记不住这么设置,所有我一般将常用的锚点做成一个对象:
var Anchor = {};
Anchor.LEFT_TOP = cc.p(0,1);
Anchor.RIGHT_TOP = cc.p(1, 1);
Anchor.RIGHT_BOTTOM = cc.p(1, 0);
Anchor.LEFT_BOTTOM = cc.p(0, 0);
Anchor.MIDDLE = cc.p(0.5, 0.5);