首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKEffectNode shouldRasterize在iOS 9.2中崩溃了吗?

SKEffectNode shouldRasterize在iOS 9.2中崩溃了吗?
EN

Stack Overflow用户
提问于 2015-12-15 23:00:54
回答 1查看 128关注 0票数 0

我记得自从SpriteKit诞生以来,它从来没有在另一个SKCropNode中支持过SKCropNode。出于这个原因,我决定在子节点中使用带有shouldRasterize属性的SKEffectNode,这似乎工作得很好……直到现在。

从iOS 9.2开始,SKEffectNode中使用此属性的精灵不显示或显示纯白色纹理。由于SKCropNode中的SKCropNode仍然不能工作,我别无选择。

有没有人知道解决这个问题的办法?或者,我应该直接向苹果公司报告吗?

EN

回答 1

Stack Overflow用户

发布于 2015-12-16 01:38:20

我们为这个问题找到了另一个“黑客”的解决方法。基本上,您可以使用SKView中的- (nullable SKTexture *)textureFromNode:(SKNode *)node,而不是使用SKEffectNode对其进行光栅化。

所以,以前是这样的:

代码语言:javascript
复制
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];

现在就像这样:

代码语言:javascript
复制
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及更低版本带来问题...

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34292471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档