Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 移除顶部节点时如何移除节点spritkit_Ios_Objective C_Sprite Kit - Fatal编程技术网

Ios 移除顶部节点时如何移除节点spritkit

Ios 移除顶部节点时如何移除节点spritkit,ios,objective-c,sprite-kit,Ios,Objective C,Sprite Kit,我有2个节点,如图所示。上面的节点(SKLabelNode)是下面的节点(SKSpriteNode)的子节点。当我触摸SKLabelNode时,应将两个节点从场景中移除,但现在仅移除标签节点,当我触摸上面的节点时,您能建议如何移除下面的节点吗 命名节点,并在适当时枚举(以swift格式): obj-c示例: [self enumerateChildNodesWithName:@"button" usingBlock:^(SKNode *node, BOOL *stop) { // rem

我有2个节点,如图所示。上面的节点(
SKLabelNode
)是下面的节点(
SKSpriteNode
)的子节点。当我触摸
SKLabelNode
时,应将两个节点从场景中移除,但现在仅移除标签节点,当我触摸上面的节点时,您能建议如何移除下面的节点吗


命名节点,并在适当时枚举(以swift格式):

obj-c示例:

[self enumerateChildNodesWithName:@"button" usingBlock:^(SKNode *node, BOOL *stop) {
    // remove the button node from your scene
    [node removeFromParent];
  }];
[self enumerateChildNodesWithName:@"label" usingBlock:^(SKNode *node, BOOL *stop) {
    // remove the label node from your scene
    [node removeFromParent];
  }];

如果没有用于删除节点的代码和用于创建节点的代码,这很难回答。我猜您使用的是标准的touchsbegin方法,只是在点上获取节点。如果是这种情况,您可能需要检查实际接触的节点

 CGPoint location = [touch locationInNode:self];
 SKNode *node = [self nodeAtPoint:location];

 if ([node isKindOfClass:[SKLabelNode class]])
 {
    [node.parent removeFromParent];
 }
 else
 {
    [node removeFromParent];
 }
但是,如果节点有名称(这样会更安全),最好先检查名称

CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];

if ([node.name isEqualToString:@"label"])
{
    [node.parent removeFromParent];
}
else if ([node.name isEqualToString:@"button"])
{
    [node removeFromParent];
}

谢谢你的快速回复。我不熟悉swift,你能给出目标c代码吗。谢谢。。
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];

if ([node.name isEqualToString:@"label"])
{
    [node.parent removeFromParent];
}
else if ([node.name isEqualToString:@"button"])
{
    [node removeFromParent];
}