我记得自从SpriteKit诞生以来,它从来没有在另一个SKCropNode中支持过SKCropNode。出于这个原因,我决定在子节点中使用带有shouldRasterize属性的SKEffectNode,这似乎工作得很好……直到现在。
从iOS 9.2开始,SKEffectNode中使用此属性的精灵不显示或显示纯白色纹理。由于SKCropNode中的SKCropNode仍然不能工作,我别无选择。
有没有人知道解决这个问题的办法?或者,我应该直接向苹果公司报告吗?
发布于 2015-12-16 01:38:20
我们为这个问题找到了另一个“黑客”的解决方法。基本上,您可以使用SKView中的- (nullable SKTexture *)textureFromNode:(SKNode *)node,而不是使用SKEffectNode对其进行光栅化。
所以,以前是这样的:
SKEffectNode *rasterizedSprite = [SKEffectNode node];
SKSpriteNode *mask = [SKSpriteNode spriteNodeWithImageNamed:@"maskImage"];
SKCropNode *cropNode = [SKCropNode node];
[cropNode setMaskNode: mask];
[cropNode addChild: spriteToMask];
[rasterizedSprite addChild:cropNode];
rasterizedSprite.shouldRasterize = YES;
[self addChild:rasterizedSprite];现在就像这样:
SKSpriteNode *mask = [SKSpriteNode spriteNodeWithImageNamed:@"maskSprite"];
SKCropNode *cropNode = [SKCropNode node];
[cropNode setMaskNode: mask];
[cropNode addChild: spriteToMask];
SKView *view = [[SKView alloc]init];
SKSpriteNode *rasterizedSprite = [SKSpriteNode spriteNodeWithTexture:[view textureFromNode:cropNode]];
[self addChild:rasterizedSprite];此解决方法可能会给iOS8及更低版本带来问题...
https://stackoverflow.com/questions/34292471
复制相似问题