Ios 移除顶部节点时如何移除节点spritkit
我有2个节点,如图所示。上面的节点(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
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];
}