2

有谁知道如何使用不规则形状节点使用 iOS 的 spritekit 裁剪图像?问题是当我对其进行 skcrop 时,形状有 2 层,因此裁剪失败。要裁剪一个必须使用单层。知道如何在加载场景之前先栅格化形状吗?我已经尝试过 skeffectnode 和 shouldRasterize ,但这也失败了,很可能是因为它也包含 2 个孩子,或者在加载场景后发生光栅化。我也尝试将形状转换为纹理,但由于与 skeffectnode 相同的原因而失败。我已经查看了有关堆栈溢出的其他可能解决方案,但似乎没有一个有效或仅限于正方形,所以我认为这是一个只能存在于 iOS7 中的错误,所以请不要

现在所有迹象都表明不使用带有填充的 skshapenode 来裁剪图像。

4

1 回答 1

2

我基本上一直在包装它,直到它起作用。最终解决方案似乎是创建一个 SKEffectNode 并将我的 SKShapeNode 添加为 SKEffectNode 的子级。但这还不够。我还必须将 SKEffectNode 包装在 SKSpriteNode 中。最后,添加 SKSpriteNode 作为 SKCropNode 的 maskNode。请参阅下面的代码。我还有其他可能对解决方案有帮助的设置。

        SKCropNode *cropNode = [[SKCropNode alloc] init];

        SKEffectNode*rasterEffectNode = [SKEffectNode node];
        [rasterEffectNode addChild:ballShape];
        rasterEffectNode.shouldRasterize = true;
        ballShape.lineWidth = 0;
        ballShape.antialiased = true;
        [ballShape setStrokeColor:[SKColor clearColor]];
        ballShape.fillColor = [SKColor blackColor];

        SKSpriteNode*spriteWrapperFix = [SKSpriteNode node];
        [spriteWrapperFix addChild:rasterEffectNode];
        [cropNode setMaskNode:spriteWrapperFix];
        [cropNode addChild:sprite];
        [container addChild:cropNode];
于 2014-06-07T05:31:19.650 回答