【问题标题】:SKNode children with array of classes具有类数组的 SKNode 子级
【发布时间】:2015-02-12 13:19:53
【问题描述】:

我正在尝试编写一种方法来查找属于特定类的 SKNode 的子级 - 但我在这里遇到了 EXC 错误

有人知道为什么会这样吗?

import SpriteKit

extension SKNode {
  func children(#klasses: [AnyClass]) -> [SKNode] {
    var matchedNodes = [SKNode]()
    for child in children as [SKNode] {
      for klass in klasses {
        if child.isKindOfClass(klass) {
          matchedNodes.append(child)
        }
      }

      matchedNodes += child.children(klasses: klasses)
    }
    return matchedNodes
  }

}

class Apple: SKNode {}
class Orange: SKNode {}

let apple = Apple()
let orange = Orange()

apple.addChild(orange)

let fruits = apple.children(klasses: [Apple.self, Orange.self])

错误:

执行被中断,原因:EXC_BAD_INSTRUCTION (code=EXC_i386_INVOP, subcode=0x0)。

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    试试这个代码

    extension SKNode {
        func children(#klasses: [AnyObject]) -> [SKNode] {
            var matchedNodes = [SKNode]()
            for child in children as [SKNode]{
                for klass in klasses {
                    if child.dynamicType === klass {
                        matchedNodes.append(child)
                    }
                }
                matchedNodes += child.children(klasses: klasses)
            }
            return matchedNodes
        }
    }
    

    【讨论】:

    • 这行得通!我会赞成你的回答,但显然我需要 15 的声誉,哈哈 - 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    相关资源
    最近更新 更多