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)
答案 0 :(得分:2)
在节点放置到场景之前,动作不会触发节点,这里有鸡和蛋的困境。你想在节点(鸡蛋)存在于世界之后将节点(鸡蛋)添加到场景(鸡蛋)(鸡生出同一个鸡蛋)。你需要让其他人将节点放在场景上,然后节点就能运行这些动作。
将您的开始动作放在场景上,而不是您的节点上,它应该开始运行