swift - self.addChild 是做什么的?

标签 swift sprite-kit swift3 nodes addchild

这是一个愚蠢的问题,但是函数 self.addChild() 做了什么?

我很熟悉这个函数,也很熟悉如何使用它,但我不确定它把 child 添加到什么地方。

例如,我创建并设计了一个名为 spinnyNodeSKShapeNode。然后我调用函数:

func touchDown(atPoint pos : CGPoint) {
    if let n = self.spinnyNode?.copy() as! SKShapeNode? {
        n.position = pos
        n.strokeColor = SKColor.black
        self.addChild(n)
    }

在这种情况下, parent 是什么?是创建节点的 View 吗?

非常感谢您抽出时间回答愚蠢的问题。

最佳答案

让我们分解一下:

self 在这种情况下,指的是您当前所在的 SKScene。因此,如果您在 gameScene 中,节点将被添加到gameScene。请注意,您可以将节点添加到其他节点,因此如果您有一个名为 gameLayerSKNode,您可以将节点添加到 gameLayer,这将然后添加到场景中。 (看起来像这样:gameLayer.addChild(node))如果节点没有指定位置,默认选择 self

addChild(node) 是实际将指定节点添加到指定位置的函数(见上文)。您通过将声明的名称放在括号中来告诉编译器将哪个节点添加到场景中。

确保您正在设置节点属性(positionsize 等...),因为在您更改它们之前它们会保持默认值。

关于swift - self.addChild 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40776507/

相关文章:

swift - 使用 enumerateBodies alongRayStart 反弹光线

swift - Spritekit - 以 NSException 类型的未捕获异常终止

ios - 无法在SpriteKit的SKLabelNode的FontColor中使用UIColor(red:,green:,blue :,)

ios - UIBezierPath 的颜色和线宽错误

ios 无法将类型 '()' 的值转换为预期的参数类型 'String' swift 3

ios - 使用 reduce 填充 [String : [CGFloat]] dictionary from an object array

swift - 在 SWIFT 中使用结构(字节)- 结构到 NSData 和 NSData 到结构

ios - 导航栏在 segue 后消失

ios - UIcollectionViewCell 中 UITextField 的单边框(swift 3 xcode)

swift - 从 Swift 2 迁移到 Swift 3 : Initializer has different argument names from those required by protocol 期间的奇怪问题