将一个节点添加到父节点里面时,需要设置其在父节点上的位置,本质上是设置节点的锚点(Anchor Point)在父节点坐标系上的位置。锚点同时也是旋转一个节点时的中心点。
锚点的值是节点宽和高的比例因子,有以下特性。
(1)Anchor Point 的两个参数范围为0~1.它们表示的并不是像素点,而是乘数因子。(0.5,0.5)表示Anchor Point位于节点长度乘0.5和宽度乘0.5的地方,即节点的中心。
(2)在Quick中Layer的Anchor Point的默认值为(0,0),其他Node的默认值为(0.5,0.5)。
忽略锚点
Ignore Anchor Point全称是 ignoreAnchorPointForPosition,作用是将锚点固定在一个地方。如果设置其值为true,则节点的Anchor Point固定为左下角,否则为默认值或用户设定值。
ZOrder 与渲染顺序
Quick开发2D游戏,z轴的值并不影响物体显示在屏幕上的远近,它只与渲染顺序有关,z轴值小的Node最先被渲染。
Quick中Node有两个ZOrder值
(1)LocalZorder是一个父节点的兄弟节点之间排序的key值,决定它们的在SceneGraph渲染树上的顺序
如果两个节点的LocalZOrder相同,那么先加入的节点先被渲染
(2)GlobalZOrder是绕过Scene Graph渲染树直接提升渲染等级的一个入口。GlobalZOrder依然是值小的渲染。
当GlobalZOrder为0,节点遵循Scene Graph渲染
默认情况下,所有节点的GlobalZOrder初始化为0
如果两个节点的GlobalZOrder不为0且相同,那么渲染顺序不可预期
SpriteBatchNode 不支持GlobalZOrder
设置LocalZOrder的相关接口如下:
Node:addChild(child,zorder,tag)
Node:add()
Node:addTo()
Node:zorder()
Node:setLocalZorder()
设置GlobalZOrder的相关接口如下:
Node:setPositionZ()
Node:setGlobalZOrder()