2

我知道有SKCropNode,但它只会根据 的 alpha 阈值完全输入或排除像素maskNode。我已经尝试过使用SKEffectNode过滤CIBlendWithAlphaMask器,但我得到的结果是不可见的,我也不确定如何移动面具。这是代码:

SKSpriteNode* overlay = [SKSpriteNode spriteNodeWithImageNamed:@"Overlay.png"];
//...
SKEffectNode* blendNode = [[SKEffectNode alloc] init];
blendNode.filter = [CIFilter filterWithName:@"CIBlendWithAlphaMask"];

UIImage* maskImage = [UIImage imageNamed:@"MaskImage.png"];
[blendNode.filter setValue:[maskImage CIImage] forKey:@"inputMaskImage"];

[blendNode addChild:overlay];
[self addChild:blendNode];

我已经找到了完美的解决方案,使用 aSKLightNode来点亮纹理,然后使用 将其混合到帧缓冲区中SKBlendModeAdd,但由于某种原因,它在 iPhone 5 上不起作用(这里有一个相关主题)。我也知道这个话题,这也没有帮助。

任何正确 alpha-mask a 的解决方案SKSpriteNode将不胜感激!运行 iOS 8。

4

1 回答 1

1

使用动态生成CIImage的掩码可以解决问题。它可以由 CIFilter 创建,使用您需要的任何渐变或图像作为蒙版,并将inputCenter属性设置为您想要的位置。

于 2014-09-19T09:38:39.980 回答