C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 可以在Sprite Kit中使用一个圆圈(SKShapeNode)作为掩码吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在Sprite Kit项目中创建一个圆形面具.我创建这样的圈子(将其定位在屏幕的中心):
SKCropNode *cropNode = [[SKCropNode alloc] init];

SKShapeNode *circleMask = [[SKShapeNode alloc ]init];
CGMutablePathRef circle = CGPathCreateMutable();
CGPathAddArc(circle,NULL,CGRectGetMidX(self.framE),CGRectGetMidY(self.framE),50,M_PI*2,YES);
circleMask.path = circle;
circleMask.lineWidth = 0;
circleMask.fillColor = [SKColor blueColor];
circleMask.name=@"circleMask";

并进一步降低代码,我将其设置为cropNode的掩码:

[cropNode setMaskNode:circleMask];

…但是,除了在圆圈中显示内容之外,该面具显示为正方形.

可以使用SKShapeNode作为掩码,还是需要使用图像?

解决方法@H_@R_674_11241@_14@
经过很多的发誓,冲刷网页,并在Xcode的实验,@L_772_6@一个真正的黑客修复.

请记住,这是一个非常讨厌的黑客 – 但是你可以指责Sprite Kit实现SKShapeNode.将填充添加到路径会导致以下情况:

>为您的场景添加一个额外的节点
>路径变得无法掩码 – 它出现在掩码之上
>使任何非SKSpriteNode兄弟节点不可屏蔽(例如SKLabelNodes)

不是理想的状态.

灵感来自于Tony Chamblee’s progress timer,“修复”是完全免除填充,只需使用路径的笔画:

SKCropNode *cropNode = [[SKCropNode alloc] init];

SKShapeNode *circleMask = [[SKShapeNode alloc ]init];
CGMutablePathRef circle = CGPathCreateMutable();
CGPathAddArc(circle,YES); // replace 50 with HALF the desired radius of the circle
circleMask.path = circle;
circleMask.lineWidth = 100; // replace 100 with DOUBLE the desired radius of the circle
circleMask.strokeColor = [SKColor whiteColor];
circleMask.name=@"circleMask";

[cropNode setMaskNode:circleMask];

如同评论的那样,您需要将半径设置为您通常拥有的半径,并将线宽设置为将半径加倍.

希望未来苹果会看这个;现在,这个黑客是我发现的最好的解决方案(除了使用一个图像,如果你的面具需要动态的话,这不是很有效).

大佬总结

以上是大佬教程为你收集整理的objective-c – 可以在Sprite Kit中使用一个圆圈(SKShapeNode)作为掩码吗?全部内容,希望文章能够帮你解决objective-c – 可以在Sprite Kit中使用一个圆圈(SKShapeNode)作为掩码吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。