0

我正在尝试通过使用两个重叠的圆圈来创建新月效果。我的想法是我可以从另一个中减去一个,但我在执行它时遇到了麻烦。

这是我对路径进行编码的方式(第二条路径与第一条路径重叠了大约一半):

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 警告我可能会导致不稳定)所以我一直在寻找另一种解决方案。

4

2 回答 2

0

也许您应该尝试手动绘制路径。Ray Wenderlich 有一个关于这个主题的很棒的教程

另一种方法可能是使用一些 CoreImage 过滤器 - 我记得,精灵套件确实支持一些 CoreImage 功能(请参阅 SKEffectNode)。在核心图像中有一个类似减法的过滤器,您使用两张图像,一张是蒙版。但我想这不是你想要的。

于 2013-12-05T23:42:12.053 回答
0

您应该使用SKCropNode。额外的字符,所以我可以提交。

于 2013-12-06T12:33:45.023 回答