self.addChild 是做什么的?

What does self.addChild Do?

这是个愚蠢的问题,但是函数 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是什么?是创建节点的视图吗?

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

父级本质上就是场景,而您所做的就是将该节点添加到场景中。如果没有这个调用,节点会被创建,但不会传递给场景,所以它不会产生。

把它想象成给老师做一些作业,然后 addChild 提交。如果您不提交,则不会使用。因此,无论 class 你的函数在什么地方,无论是 SKScene 等,它都是节点被传递到的父节点。

别担心,这不是一个愚蠢的问题,了解这些功能如何工作的基础是构建更好应用程序的好方法!

让我们分解一下:

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

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

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