swift - 具有类数组的 SKNode 子级

标签 swift sprite-kit

我正在尝试编写一种方法来查找属于特定类的 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(代码=EXC_i386_INVOP,子代码=0x0)。

最佳答案

试试这段代码

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
    }
}

关于swift - 具有类数组的 SKNode 子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28478506/

相关文章:

ios - 在 iOS 10 中使用 WKWebView

ios - shadowedBitMask 与 shadowCastBitMask

ios - 如何在运行时每 0.2 秒在屏幕上的不同位置重新创建屏幕上的相同节点?

ios - Xcode Swift SKAction.follow 起点

ios - 有没有办法在 Swift 中反转动画?

ios - Apple 的 iPad 版 Swift Playgrounds 应用程序如何执行代码?

ios - Sprite 不会被删除 - swift

ios - 代码中的 SKTileSet 平铺变体访问

ios - 如何正确加载来自 Firebase 的信息?

ios - 如何从 Xcode 中导入的 .dae 混合器访问混合形状