如何获取场景中的skspritenode数量?

时间:2015-04-20 01:42:13

标签: ios swift sprite-kit skspritenode

我想知道场景中节点的数量。例如,我想创建一个if语句,以便如果场景中的节点数为0或任何其他数字,我会调用一个函数。

这就是我所做的,但它只在第一次调用函数时,children.count为0,但忽略其他时间。

我没有在代码中的任何其他地方删除或添加任何精灵节点。

func dot(){
    var dotTexture = SKTexture (imageNamed: "dot")
    dotTexture.filteringMode = SKTextureFilteringMode.Nearest

    var dot = SKSpriteNode(texture: dotTexture)
    dot.setScale(0.5)
    dot.position = CGPoint(x: self.frame.size.width * 0.5 , y: self.frame.size.height * 1.1)

    dot.physicsBody = SKPhysicsBody (circleOfRadius: dot.size.height/2.0)
    dot.physicsBody?.dynamic = true
    dot.physicsBody?.allowsRotation = false

    self.addChild(dot)


    println("done")

}

 override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
    if children.count == 0 {
        dot()

        println("dot")
    }
}

3 个答案:

答案 0 :(得分:1)

如果您在场景中执行此操作,则可以执行

if (self.children.count == x) {
   yourFunction() //call your function
}

if (children.count == x) {
    yourFunction() //call your function
}

回应你的评论:

这是一个在sprite kit中运行每一帧的更新方法。像这样使用它:

override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
    if (children.count == x) {
        yourFunction() //call your function
    }
}

答案 1 :(得分:1)

使用它:

if (self.children.count == someNumber) {
    <#enter code here#>
}

其中一些数字是触发号或表达式。

Objective-C,使用:

if ([self children].count == someNumber) {
    // enter code here
}

此外,它在哪里说&#34;在这里输入代码,&#34;打电话给你的功能并做你需要做的事。

答案 2 :(得分:0)

  

我想找出一个场景中的节点数量

使用此方法:

func nodeCount(scene:SKScene) -> Int {
    return scene[".//*"].count
}

这将为您提供整个场景层次结构中所有节点的数量。