在我的应用程序中,我需要绘制一个圆圈。它完成如下:
// Create the Shape Node
SKShapeNode *shape = [[SKShapeNode alloc]init];
CGFloat radius = 10;
// Draw Shape Path
CGMutablePathRef myPath = CGPathCreateMutable();
CGPathAddArc(myPath, NULL, 0, 0, radius, 0, M_PI*2, YES);
[shape setPath:myPath];
[shape setLineWidth:1.0];
// Set Properties, Hierarchy, and add to scene
SKSpriteNode *sprite = [[SKSpriteNode alloc]init];
[sprite addChild:shape];
冷却。我只是创建一个SKShapeNode,设置它的路径,然后将其添加为精灵的子项。
要稍后删除,请执行以下操作:
SKShapeNode *shape = (SKShapeNode *)[self.parentNode childNodeWithName:@"shape"];
[shape setPath:nil];
我也删除了'#s;'来自它的父母,然后Nullify它的父母试图摆脱它。
但是。这个。请问。不。工作。
在模拟器中,圆圈总是消失。但是在设备上,它会停留在屏幕上,无法移除。我该如何删除它?
我确实将“路径”排除在外。属性,null'形状' object,null其父对象,它不会消失..
这是我目前的问题。
答案 0 :(得分:1)
您可以使用CGPath
便捷方法,而不是创建shapeNodeWithCircleOfRadius
来创建圈子节点。例如,
CGFloat radius = 10;
SKShapeNode *shape = [SKShapeNode shapeNodeWithCircleOfRadius:radius];
// Give the shape a name (missing from your code)
shape.name = @"circle";
然后,您可以使用
访问和删除场景中的圆圈SKShapeNode *shape = (SKShapeNode *)[self childNodeWithName:@"circle"];
[shape removeFromParent];
其中self
是SKScene
子类,例如GameScene
。