我正在实现一个根据当前可见区域动态加载背景图形的游戏。背景是使用 SKShapeNode 绘制的。为了节省内存,我只画了CGPath的一小部分。问题是无论我使用什么 CGPath 坐标,生成的 SKShapeNode 帧将始终包含 (0, 0) 点。这是一个例子:
SKShapeNode *shapeNodePos = [SKShapeNode node];
CGMutablePathRef pathPos = CGPathCreateMutable();
CGPathAddRect(pathPos, NULL, CGRectMake(50, 50, 50, 50));
shapeNodePos.path = pathPos;
CGPathRelease(pathPos);
NSLog(@"Frame pos = (%f, %f, %f, %f)", shapeNodePos.frame.origin.x, shapeNodePos.frame.origin.y, shapeNodePos.frame.size.width, shapeNodePos.frame.size.height);
结果是:
Frame pos = (0.000000, 0.000000, 100.000000, 100.000000)
但是,我希望 SKShapeNode.frame 仅限于 CGPath 内容:
Frame pos = (50.000000, 50.000000, 50.000000, 50.000000)
它是 SpriteKit 中的错误还是实际上是预期的行为?如果那个小的 CGPath 矩形绘制得离 (0, 0) 点很远,它还会对性能产生负面影响,还是 Sprite Kit 会忽略帧的空白区域?
提前致谢!