如何在SpriteKit中正确绘制和删除圆圈

时间:2015-06-30 03:12:42

标签: ios objective-c sprite-kit

在我的应用程序中,我需要绘制一个圆圈。它完成如下:

// 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其父对象,它不会消失..

这是我目前的问题。

1 个答案:

答案 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];

其中selfSKScene子类,例如GameScene