ios7 - iOS 7 iPad SpriteKit - 使用不规则的 SKShapeNode 作为 SKCropNode 的 mask

标签 ios7 sprite-kit skshapenode skcropnode

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

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

最佳答案

我基本上一直把它包裹起来,直到它起作用为止。最终解决方案似乎是创建一个 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];

关于ios7 - iOS 7 iPad SpriteKit - 使用不规则的 SKShapeNode 作为 SKCropNode 的 mask ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23921904/

相关文章:

swift - 用小间隙绘制圆形轮廓 Sprite Kit Swift

ios - Swift Spritekit 滚动背景

ios - 如何进行 CGPath 或 SKShapeNode 旋转

iphone - iOS 7多空格问题

ios - 视频 iOS 7 上的模糊 Pane

ios - 在 Xcode Spritekit 中缩放物理体

swift - 使用 Sprite Kit swift 保存和更新高分

swift - SKshapenode 没有响应 Physicsbody

iphone - ios 7 视频保存问题

ios - Objective-C:如何从 POST 方法返回响应?