当前位置: 首页 > 面试题库 >

遍历SKNode的所有子级?

贝滨海
2023-03-14
问题内容

我有一个带有多个子SKSpriteNode的SKNode。一个简化的例子:

var parentNode = SKNode()
var childNode1 = SKSpriteNode()
var childNode2 = SKSpriteNode()

self.addChild(parentNode)
parentNode.addChild(childNode1)
parentNode.addChild(childNode2)

我想colorizeWithColor对所有这些孩子采取行动。当我在上执行操作时parentNode,没有任何效果。

我不能enumerateChildNodesWithName在父项上使用,因为它的许多子项已经具有我正在使用的名称。

有没有一种方法可以遍历的所有子项parentNode,以便对所有子项执行单个操作?


问题答案:

您可以简单地列举parentNode.children

for child in parentNode.children as! [SKNode] {
    // ...
}

如有必要,请检查每个孩子是否确实是SKSpriteNode

for child in parentNode.children {
    if let spriteNode = child as? SKSpriteNode {
        // ...
    }
}

Swift 2(Xcode 7)开始, 可以将枚举和可选强制转换与具有case-pattern的for循环结合使用:

for case let child as SKSpriteNode in parentNode.children {
    // ...
}


 类似资料:
  • 问题内容: 这是我的代码: 这是我此页面的XML: 问题是我只能在LogCat控制台上得到它: 为什么我没有得到对TextViews的引用? 问题答案: 您需要递归遍历视图树。当前,您仅列出根视图的子级。 换句话说,您需要这样的东西:

  • 问题内容: 我正在运行以下代码,从具有特定列的所有表中提取所有相关的行。外层应该检查该迭代表中是否存在该列。如果没有,它应该完成该迭代并移至下一张表。如果表中有该列,则应检查该表是否将返回任何记录。如果没有要返回的记录,则应结束该迭代并移至下一个表。如果有记录,则应在SSMS中显示它们。 这似乎可行,因为SSMS仅返回带有有效条目的网格。我不明白的是:为什么我仍然会收到这些错误? 编辑 使用建议后

  • 问题内容: 有没有一种方法可以获取Go语言映射中所有键的列表?元素的数量由给出,但是如果我有类似的地图: 如何遍历所有键? 问题答案: https://play.golang.org/p/JGZ7mN0-U- 要么 语句的Go语言规范指定第一个值是键,第二个变量是值,但不必存在。

  • 问题内容: 如何使用pathlib递归遍历给定目录的所有子目录? 似乎只迭代给定目录的直接子级。 我知道这可以通过或使用,但是我想使用pathlib,因为我喜欢使用path对象。 问题答案: 您可以使用对象的方法:

  • 问题内容: 我们有一个软件不会删除不再需要的条目。为了了解服务器中有多少数据正在浪费,并准备进行大型清理操作,我试图遍历所有表并拉出标记为删除的记录。这就是我正在使用的: 这是我的错误: 消息116,级别16,状态1,行19当未将EXISTS引入子查询时,只能在选择列表中指定一个表达式。 我意识到我的错误可能与选择该行中的两列有关 但是,我不确定如何才能确保选择下一行。 PS仅用于脚本测试。 如何

  • 问题内容: 我有一个表A,并且有一个主键ID。 现在我要遍历A中的所有行。 我发现类似“针对A中的每个记录”的内容,但这似乎并不是您在MySQL中的处理方式。 我想为每一行获取一个字段并对其进行转换,将其插入到另一个表中,然后更新该行的某些字段。我可以将select部分和insert放入一个语句中,但是我也不知道如何在其中进行更新。所以我想循环。实际上,我不想使用MySQL以外的任何东西。 编辑