使 spriteNode 淡出
Making a spriteNode fade away
Swift5,iOS14
编写此代码以在 sprite 节点中淡入淡出...工作正常,但 Xcode 这么说,这没有意义,因为我在循环中使用计时器。
Initialization of immutable value 'timer' was never used; consider replacing with assignment to '_' or removing it
let timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true) { timer in
node2Delete?.alpha -= 0.1
ghost.alpha += 0.1
if node2Delete?.alpha == 0 {
node2Delete?.removeFromParent()
timer.invalidate()
}
}
而且它不会抱怨循环内的定时器没有被定义?这是一个错误还是我遗漏了什么?
有更好的方法吗?我这里设置的定时器真的被取消了吗?
你想在这里使用 SKAction 而不是 Timer,所以你可以用下面的代码替换你的所有代码。
创建两个保存淡入淡出逻辑的变量,一个用于淡入,另一个用于淡出。
运行 fadeIn
在您的 ghost
节点上。幽灵节点将在 5 秒内逐渐出现。
运行 fadeOut
在您的 node2Delete
节点上,这将在 5 秒内逐渐将 alpha 淡化为 0。完成后,我们将节点从其父节点中删除。
let fadeOut = SKAction.fadeAlpha(to: 0.0, duration: 5.0)
let fadeIn = SKAction.fadeAlpha(to: 1.0, duration: 5.0)
ghost.run(fadeIn)
node2Delete.run(fadeOut){
self.node2Delete.removeFromParent()
}
Swift5,iOS14
编写此代码以在 sprite 节点中淡入淡出...工作正常,但 Xcode 这么说,这没有意义,因为我在循环中使用计时器。
Initialization of immutable value 'timer' was never used; consider replacing with assignment to '_' or removing it
let timer = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true) { timer in
node2Delete?.alpha -= 0.1
ghost.alpha += 0.1
if node2Delete?.alpha == 0 {
node2Delete?.removeFromParent()
timer.invalidate()
}
}
而且它不会抱怨循环内的定时器没有被定义?这是一个错误还是我遗漏了什么?
有更好的方法吗?我这里设置的定时器真的被取消了吗?
你想在这里使用 SKAction 而不是 Timer,所以你可以用下面的代码替换你的所有代码。
创建两个保存淡入淡出逻辑的变量,一个用于淡入,另一个用于淡出。
运行 fadeIn
在您的 ghost
节点上。幽灵节点将在 5 秒内逐渐出现。
运行 fadeOut
在您的 node2Delete
节点上,这将在 5 秒内逐渐将 alpha 淡化为 0。完成后,我们将节点从其父节点中删除。
let fadeOut = SKAction.fadeAlpha(to: 0.0, duration: 5.0)
let fadeIn = SKAction.fadeAlpha(to: 1.0, duration: 5.0)
ghost.run(fadeIn)
node2Delete.run(fadeOut){
self.node2Delete.removeFromParent()
}