【问题标题】:search for child by specific class name按特定班级名称搜索孩子
【发布时间】:2017-11-19 16:36:44
【问题描述】:

在阅读apple doc 关于搜索子节点之后,我了解到我不仅可以按节点名称搜索,还可以按其类搜索 - 通过在 withName var 中使用 project_name.class_name。我的项目名称是颜色,我有一个类型为 SKShapeNode 的类名 BallNode。不幸的是,我找不到使用这种方法的节点(如苹果文档中所写)。在我的项目中,球是在屏幕上随机创建的,每个球的名称都是“球”,当我按名称(球)搜索时,我可以找到节点,但如果我尝试使用类名,它就不起作用。 这是我的代码:

    override func update(_ currentTime: TimeInterval) {

    self.enumerateChildNodes(withName: "color.BallNode") { node, _ in
        print("ball node found")
    }

有人知道我做错了什么吗?

【问题讨论】:

    标签: swift class sprite-kit enumerate


    【解决方案1】:

    来自 Apple 的链接确实显示了正确的代码。我刚刚在一个测试项目中尝试了以下代码,它工作了

        let ball = PushButton(upTexture: SKTexture(image:#imageLiteral(resourceName: "button")))
        ball.name = "ball1"
        addChild(ball)
    
        let ball2 = PushButton(upTexture: SKTexture(image:#imageLiteral(resourceName: "button")))
        ball2.name = "ball21"
        addChild(ball2)
    
        let ball3 = PushButton(upTexture: SKTexture(image:#imageLiteral(resourceName: "button")))
        ball3.name = "ball3"
        addChild(ball3)
    
        self.enumerateChildNodes(withName: "WordConstructor.PushButton") { node,_ in
                print("node.name \(node.name)")
        }
    

    我会检查您的项目名称是“颜色”而不是“颜色”您的项目中有多个目标吗?

    你能展示你在场景中添加球的代码吗?

    仅供参考,在您的更新语句中运行它会导致您的游戏每秒尝试找到这 60 次,这可能不是非常理想的

    【讨论】:

    • 正确的文档 - 'enumerateChildNodes(withName:using:)'
    • 该死,我看错了……我不应该这么早回答问题
    • 仍然无法正常工作,我检查了所有内容 100 次,但仍然不明白哪里出了问题。我添加了一张显示我的屏幕的照片 - 也许你可以发现我的错误
    • 不会给你带来麻烦,但你绝对不应该在你的问题中放置代码图像(你应该输入或粘贴它)。它会让你很快得到一些反对意见。
    • 为什么将 Ball 类嵌套在 GameScene 类中?将其移到 GameScene 之外,看看是否可以修复它
    猜你喜欢
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多