簡體   English   中英

SKCropNode屏蔽邊緣抗鋸齒

[英]SKCropNode masking edge anti-aliasing

我創建了一個圓形蒙版,並使用精靈工具包SKCropNode類為蒙版內的精靈設置動畫。 但是掩模的邊緣看起來像素化。

有沒有辦法使用抗鋸齒來平滑邊緣?

如果要屏蔽任何具有抗鋸齒效果的SKNode / SKSpriteNode,則可以使用SKEffectNode而不是SKCropNode。 它也適用於動畫節點。 這是一個例子:

// Set up your node
SKNode *nodeToMask = [SKNode node];
// ...

// Set up the mask node
SKEffectNode *maskNode = [SKEffectNode node];

// Create a filter
CIImage *maskImage = [[CIImage alloc] initWithCGImage:[UIImage imageNamed:@"your_mask_image"].CGImage];
CIFilter *maskFilter = [CIFilter filterWithName:@"CISourceInCompositing"
                                  keysAndValues:@"inputBackgroundImage", maskImage, nil];
// Set the filter
maskNode.filter = maskFilter;

// Add childs
[maskNode addChild:nodeToMask];
[scene addChild:maskNode];

來自官方文檔:

如果掩模中的像素具有小於0.05的α值,則圖像像素被遮蔽。

因此,SKCropNode不支持每像素alpha值。 它要么繪制像素,要么不繪制像素。 如果alpha(由抗鋸齒使用)對您很重要,您應該考慮替代路線。 例如:

如何掩蓋UIImageView

截至目前(2018年6月),我可以確認SKCropNode將進行每像素alpha混合。 如果裁剪節點具有SKSpriteNode作為蒙版,並且蒙版節點使用具有消除鋸齒蒙版圖像的紋理,裁剪節點將執行正確的混合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM