SKAction中的代码运行操作未执行

时间:2016-12-21 01:42:50

标签: swift sprite-kit skspritenode skaction

SKAction.run动作中的代码块由于某种原因永远不会执行。

澄清一下,startAction内部的两条线由于某些原因从未运行过,即使其他线也在运行。

在这些行上加上断点证明这些行永远不会执行。

有什么线索?

    // Set first frame
    let firstFrame = frames[0]
    let animationNode = SKSpriteNode(texture: firstFrame)
    animationNode.position = CGPoint(x: x, y: y)

    // Set start action
    let startAction = SKAction.run({
        gAudio.playSound(file: .TestSound) // Never runs
        self.animationLayer.addChild(animationNode) // Never runs
    })

    // Set rest of animation
    let timePerFrame = 0.5
    let animationAction = SKAction.animate(with: frames, timePerFrame: timePerFrame, resize: false, restore: true)
    let removeAction = SKAction.removeFromParent()
    let animationSequence = SKAction.sequence([startAction, animationAction, removeAction])

    // Run animation
    animationNode.run(animationSequence)

1 个答案:

答案 0 :(得分:2)

在节点放置到场景之前,动作不会触发节点,这里有鸡和蛋的困境。你想在节点(鸡蛋)存在于世界之后将节点(鸡蛋)添加到场景(鸡蛋)(鸡生出同一个鸡蛋)。你需要让其他人将节点放在场景上,然后节点就能运行这些动作。

将您的开始动作放在场景上,而不是您的节点上,它应该开始运行