每一個繼承了CCNode的元素都一個的anchorPoint(錨點)屬性,anchorPoint和position屬性(相對于父元素的位置,通過setPosition來設定)一起決定一個CCNode的顯示位置。
錨點是相對于CCNode的一個點,它的參數是兩個數值,分别是錨點位置對contentSize的比值,例如(0,0)代表左下角,(0,1)代表左上角,(1,1代表)右上角,(1,0.5)代表右邊界的中點,(2,0.5)代表垂直于右邊界中垂線向外一個CCNode寬度的位置,以此類推
例1:
local scene = CCScene:create()
local layer = CCLayer:create()
local sprite = CCSprite:create("castle.png")
layer:addChild(sprite)
scene:addChild(layer)
CCDirector:sharedDirector():runWithScene(scene)
例1結果:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90TQNlXTURWNsJzYwZ1RiZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DOxczN0cTM2ATOwYDM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
分析:預設CCNode的Anchor位于它的中心,預設CCNode的位置是父元素layer的左下角(0,0),是以sprite的中心位于左下角位置,使得隻有右上方四分之一的城堡被顯示出來
例2:
local scene = CCScene:create()
local layer = CCLayer:create()
local sprite = CCSprite:create("castle.png")
sprite:setAnchorPoint(0,0)
layer:addChild(sprite)
scene:addChild(layer)
CCDirector:sharedDirector():runWithScene(scene)
例2結果:
分析:設定sprite的錨點(setAnchorPoint方法)為它的左下角(0,0),預設位置是父元素layer的左下角(0,0),是以sprite的左下角被設定到了layer的左下角,使得整個城堡都顯露了出來
值得注意的一點是,預設anchorPoint是在CCNode的正中心,而一個CCNode内部相對坐标系是從左下角開始計算的
例3:
local scene = CCScene:create()
local layer = CCLayer:create()
local sprite = CCSprite:create("castle.png")
sprite:setPosition(100,100)
local sprite2 = CCSprite:create("castle.png")
sprite:addChild(sprite2)
layer:addChild(sprite)
scene:addChild(layer)
CCDirector:sharedDirector():runWithScene(scene)
例3結果:
分析:sprite的錨點在正中心,但其相對于它的坐标系是從左下角開始計算的和它的錨點沒有關系,因為sprite2沒有既沒有指明錨點也米有指明位置,它的錨點(正中心)被放在了sprite的左下角,是以右上方這四分之一的圖像和sprite重合