SpriteKit:SKShapeNode.calculateAccumulatedFrame返回一个大于其内容的框架

时间:2014-11-01 20:24:44

标签: sprite-kit

使用以下代码

创建一个固定大小的SKShapeNode矩形
SKShapeNode *rect = [SKShapeNode shapeNodeWithRect: CGRectMake(0, 0, 100, 200)];
CGRect accumulatedFrame = rect.calculateAccumulatedFrame;

调试上面的代码,cumulativeFrame包含以下值:

origin=(x=-0.5, y=-0.5) size=(width=101, height=201)

为什么计算出的累积帧大于预期的100x200?

提前感谢任何暗示:)

代码示例:

    SKShapeNode *rect = [SKShapeNode shapeNodeWithRect: CGRectMake(0, 0, 200, 100)];
    CGRect accumulatedFrame = rect.calculateAccumulatedFrame;
    CGRect frame = rect.frame;

调试器为累积帧属性返回 origin =(x = -0.5,y = -0.5)size =(width = 201,height = 101)

调试器为 frame propery

返回 origin =(x = -0.5,y = -0.5)size =(width = 201,height = 101) >

使用原点> (0,0)只增加0.5到宽度和高度;似乎,sprite-kit返回一个累积的帧,它实际上包含节点并增加0.5,因此没有节点边界与累积帧的边界相交。在api参考中没有找到任何关于它的内容......

1 个答案:

答案 0 :(得分:2)

我相信您正在处理的问题是,如果您定义了strokeColor,那么边框描边会增加矩形的大小。

试试这段代码:

SKShapeNode *rect = [SKShapeNode shapeNodeWithRect: CGRectMake(0, 0, 200, 100)];
rect.strokeColor = nil;

您必须将笔划视为添加剂,并添加到形状的尺寸。