在 Swift 中删除节点之前,无法 运行 SKAction 序列
Cannot run SKAction sequence before nodes are removed in Swift
我正在尝试 运行 精灵从我的场景中移除时的序列。
我添加了一个布尔值 fruitScaled 来尝试打断序列和 SKAction.wait
让动画在移除之前完成。精灵正在从场景中移除,但动画没有 运行,精灵立即被移除。
如何在精灵从场景中移除之前将 SKAction 设为 运行?
var fruitScaled = false
func removeFruit() {
// Removing Specific Children
self.enumerateChildNodes(withName: "fruitButton") {
(node, stop) in
if node.name == "fruitButton" {
if self.fruitScaled == false {
let scale = SKAction.scale(to: 1, duration: 0.5)
let wait = SKAction.wait(forDuration: TimeInterval(0.5))
let sequence = SKAction.sequence([scale, wait])
node.run(sequence)
print("Fruit scaled down")
self.fruitScaled = true
}
if self.fruitScaled == true {
node.removeFromParent();
print("Removed old fruits")
}
}
}
}
在这种情况下您可以使用一个重要的 SKAction
let scale = SKAction.scale(to: 1, duration: 0.5)
let wait = SKAction.wait(forDuration: TimeInterval(0.5))
let remove = SKAction.removeFromParent()
let sequence = SKAction.sequence([scale, wait, remove])
node.run(sequence)
如果那不存在你可以运行它在一个块
let scale = SKAction.scale(to: 1, duration: 0.5)
let wait = SKAction.wait(forDuration: TimeInterval(0.5))
let blowup = SKAction.run { self.blowUp() }
let sequence = SKAction.sequence([scale, wait, blowup])
node.run(sequence)
仅供参考,上面代码的问题是
self.fruitScaled = true
立即设置(它不知道您的等待循环)。 运行 它与布尔值必须在等待
之后设置
let scale = SKAction.scale(to: 1, duration: 0.5)
let wait = SKAction.wait(forDuration: TimeInterval(0.5))
let change = SKAction.run { self.fruitScaled = true }
let sequence = SKAction.sequence([scale, wait, change])
我正在尝试 运行 精灵从我的场景中移除时的序列。
我添加了一个布尔值 fruitScaled 来尝试打断序列和 SKAction.wait
让动画在移除之前完成。精灵正在从场景中移除,但动画没有 运行,精灵立即被移除。
如何在精灵从场景中移除之前将 SKAction 设为 运行?
var fruitScaled = false
func removeFruit() {
// Removing Specific Children
self.enumerateChildNodes(withName: "fruitButton") {
(node, stop) in
if node.name == "fruitButton" {
if self.fruitScaled == false {
let scale = SKAction.scale(to: 1, duration: 0.5)
let wait = SKAction.wait(forDuration: TimeInterval(0.5))
let sequence = SKAction.sequence([scale, wait])
node.run(sequence)
print("Fruit scaled down")
self.fruitScaled = true
}
if self.fruitScaled == true {
node.removeFromParent();
print("Removed old fruits")
}
}
}
}
在这种情况下您可以使用一个重要的 SKAction
let scale = SKAction.scale(to: 1, duration: 0.5)
let wait = SKAction.wait(forDuration: TimeInterval(0.5))
let remove = SKAction.removeFromParent()
let sequence = SKAction.sequence([scale, wait, remove])
node.run(sequence)
如果那不存在你可以运行它在一个块
let scale = SKAction.scale(to: 1, duration: 0.5)
let wait = SKAction.wait(forDuration: TimeInterval(0.5))
let blowup = SKAction.run { self.blowUp() }
let sequence = SKAction.sequence([scale, wait, blowup])
node.run(sequence)
仅供参考,上面代码的问题是
self.fruitScaled = true
立即设置(它不知道您的等待循环)。 运行 它与布尔值必须在等待
之后设置let scale = SKAction.scale(to: 1, duration: 0.5)
let wait = SKAction.wait(forDuration: TimeInterval(0.5))
let change = SKAction.run { self.fruitScaled = true }
let sequence = SKAction.sequence([scale, wait, change])