2014-09-19 97 views
2

我知道有SKCropNode,但它只会根据maskNode的阿尔法阈值完全排除或排除像素。我已经尝试使用SKEffectNodeCIBlendWithAlphaMask过滤器,但是我得到的结果是不可见的,我也不确定如何移动蒙版。下面的代码:如何alpha遮罩SKSpriteNode?

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]; 

我已经想通了完美的解决方案,使用SKLightNode照亮纹理,然后将其融入使用SKBlendModeAdd帧缓冲,但由于某种原因,它不会在iPhone 5的工作( here's a related topic)。我也知道this topic,这也没有帮助。

任何解决方案,以正确的alpha掩码SKSpriteNode将不胜感激! 正在运行iOS 8.

+0

CIImage是零,它现在掩盖,但我仍然不知道如何移动面具... – Larry 2014-09-19 07:53:35

+0

你有没有想过这个? – nekonari 2016-05-21 20:42:01

回答

1

使用动态生成的CIImage作为遮罩会有诀窍。它可以由CIFilter创建,使用您需要的任何渐变或图像作为蒙版,并将inputCenter属性设置为您想要的位置。

+1

你能分享任何示例代码吗? – DevAno1 2015-10-19 16:22:42