Ios7 iOS 7 iPad SpriteKit-使用不规则SKShapeNode作为SKCropNode的遮罩

Ios7 iOS 7 iPad SpriteKit-使用不规则SKShapeNode作为SKCropNode的遮罩,ios7,sprite-kit,skshapenode,skcropnode,Ios7,Sprite Kit,Skshapenode,Skcropnode,有人知道如何使用spritekit for iOS使用不规则形状节点裁剪图像吗?问题是当我对它进行skcrop时,形状有两层,因此裁剪失败。要修剪,必须使用一层。在加载场景之前,知道如何首先栅格化形状吗?我尝试了skeffectnode并应在其上进行光栅化,但也失败了,很可能是因为它还包含2个子项,或者光栅化是在加载场景后进行的。我还尝试将形状转换为纹理,但由于与skeffectnode相同的原因而失败。我已经研究了其他可能的堆栈溢出解决方案,没有一个看起来有效,或者仅限于正方形,所以我认为这是

有人知道如何使用spritekit for iOS使用不规则形状节点裁剪图像吗?问题是当我对它进行skcrop时,形状有两层,因此裁剪失败。要修剪,必须使用一层。在加载场景之前,知道如何首先栅格化形状吗?我尝试了skeffectnode并应在其上进行光栅化,但也失败了,很可能是因为它还包含2个子项,或者光栅化是在加载场景后进行的。我还尝试将形状转换为纹理,但由于与skeffectnode相同的原因而失败。我已经研究了其他可能的堆栈溢出解决方案,没有一个看起来有效,或者仅限于正方形,所以我认为这是一个只存在于iOS7中的bug,所以请不要说这是一个副本,除非我先检查副本以确保它确实是一个


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

我基本上一直在包装它,直到它工作为止。End all be all解决方案似乎是创建一个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];

CropNode和ShapeNode无法一起工作似乎是一个bug。正如@Robert向您展示的那样,CropNode只响应SKSpriteNodes。你可以在这里看到一个类似的讨论:()我很高兴地看到,我不是唯一一个追求筑巢的人,直到它成为一种达到目的的手段。我原以为我疯了,但它起了作用,现在我对这个例子感到非常欣慰。是时候休息一下了。还有苏格兰威士忌,献给你,好先生!