objective-c – 可以在Sprite Kit中使用一个圆圈(SKShapeNode)作
发布时间:2020-12-16 05:55:26 所属栏目:百科 来源:网络整理
导读:我试图在Sprite Kit项目中创建一个圆形面具.我创建这样的圈子(将其定位在屏幕的中心): SKCropNode *cropNode = [[SKCropNode alloc] init];SKShapeNode *circleMask = [[SKShapeNode alloc ]init];CGMutablePathRef circle = CGPathCreateMutable();CGPathA
我试图在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作为掩码,还是需要使用图像? 解决方法
经过很多的发誓,冲刷网页,并在Xcode的实验,我有一个真正的黑客修复.
请记住,这是一个非常讨厌的黑客 – 但是你可以指责Sprite Kit实现SKShapeNode.将填充添加到路径会导致以下情况: >为您的场景添加了一个额外的节点 不是理想的状态. 灵感来自于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]; 如同评论的那样,您需要将半径设置为您通常拥有的半径,并将线宽设置为将半径加倍. 希望未来苹果会看这个;现在,这个黑客是我发现的最好的解决方案(除了使用一个图像,如果你的面具需要动态的话,这不是很有效). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |