具有类数组的 SKNode 子级

Posted

技术标签:

【中文标题】具有类数组的 SKNode 子级【英文标题】:SKNode children with array of classes 【发布时间】: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)。

【问题讨论】:

【参考方案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 的声誉,哈哈 - 谢谢!

以上是关于具有类数组的 SKNode 子级的主要内容,如果未能解决你的问题,请参考以下文章

当我在层次结构中添加额外的 SKNode 子级时,SKCropNode 失败

有两个div,一个父级,一个子级,父级有滚动条,样式如何写才能让子级的div固定在顶部,不随滚动条

如何从 SKNode.children 数组访问 SKNode 子类方法?

如何样式化具有特定子级的父 CSS 类 [重复]

使用物理 SKSpriteNode 子级暂停 SpriteKit 游戏

为啥我得到表达式必须有类类型错误? [复制]