我试图通过使用两个重叠的圆圈来创建新月效果。我的想法是我可以从另一个中减去一个,但我在执行它时遇到了麻烦。
以下是我对路径进行编码的方式(第二条路径与第一条路径重叠约一半):
SKShapeNode *baseMoon = [[SKShapeNode alloc ]init];
CGMutablePathRef moon = CGPathCreateMutable();
CGPathAddArc(moon, NULL, 0, 0, 50, 0, M_PI*2, YES);
CGPathCloseSubpath(moon);
CGPathAddArc(moon, NULL, 0, 50, 50, 0, M_PI*2, YES);
CGPathCloseSubpath(moon);
baseMoon.path = moon;
CGPathRelease(moon);
baseMoon.lineWidth = size;
baseMoon.strokeColor = [SKColor whiteColor];
有没有人知道如何从第一条路径中减去第二条路径?我已经研究过使用CGContextClip,但这需要UIGraphicsGetCurrentContext(XCode警告我可能导致不稳定),所以我一直在寻找另一种解决方案。
答案 0 :(得分:0)
也许您应该尝试手动绘制路径。 Ray Wenderlich有great tutorial on this topic。
另一种方法可能是使用一些CoreImage过滤器 - 我记得,sprite kit确实支持一些CoreImage功能(参见SKEffectNode)。在核心图像中有一个类似减法的滤镜,您可以使用两个图像,一个是蒙版。但我猜这不是你想要的。
答案 1 :(得分:0)
您应该使用SKCropNode。额外的字符,所以我可以提交。