2014-09-19 145 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