在我的 SpriteKit 游戏的 gameOverScene 中,屏幕上出现了 3 个按钮。
我试图让它们一个接一个地“弹出”...我想到了一个巧妙的方法是将它们从 0 alpha 淡入到完整。
我目前正在这样做:
//animate in buttons
restartButton.alpha = 0
shareButton.alpha = 0
exitButton.alpha = 0
let bringInUIButtons = SKAction.sequence([
SKAction.waitForDuration(1.0),
SKAction(restartButton.runAction(SKAction.fadeInWithDuration(0.3))),
SKAction.waitForDuration(1.0),
SKAction(shareButton.runAction(SKAction.fadeInWithDuration(0.3))),
SKAction.waitForDuration(1.0),
SKAction(exitButton.runAction(SKAction.fadeInWithDuration(0.3))),
])
runAction(bringInUIButtons)
但它们都会立即淡入......尽管如此,作为我的序列的一部分,我在每个 Action 之间等待一秒钟。
我什至尝试过这个:
//animate in buttons
restartButton.alpha = 0
shareButton.alpha = 0
exitButton.alpha = 0
let bringInUIButtons = SKAction.sequence([
SKAction.waitForDuration(1.0),
SKAction(restartButton.runAction(SKAction.fadeInWithDuration(0.3))),
SKAction.waitForDuration(1.0),
SKAction(shareButton.runAction(SKAction.fadeInWithDuration(0.6))),
SKAction.waitForDuration(1.0),
SKAction(exitButton.runAction(SKAction.fadeInWithDuration(0.9))),
])
runAction(bringInUIButtons)
...并通过更改淡入淡出持续时间,使每个按钮需要更长的时间才能出现,但看起来不太好。
我是否错误地使用了waitForDuration
?我认为它会在开始序列中的下一个操作之前等待?
如何让下一个按钮出现在第一个按钮之后?
最佳答案
我认为问题在于您让每个按钮运行自己的“淡入”操作,这意味着它们将并行执行其操作。如果您希望它们在场景中一次出现一个,最好让场景运行该 Action 。这是我的解决方案...
实例化 restartButton
、shareButton
和 exitButton
时,设置它们的名称属性,如下所示:
restartButton.name = "restartButton"
shareButton.name = "shareButton"
exitButton.name = "exitButton"
您将使用这些 name
属性来指定要使用 runAction(_:onChildWithName:)
方法在其上运行“淡入”操作的按钮。
当需要淡入按钮时,请使用这组操作:
let fadeIn = SKAction.fadeInWithDuration(1)
let wait = SKAction.waitForDuration(1)
let bringInRestartButton = SKAction.runAction(fadeIn, onChildWithName: "restartButton")
let bringInShareButton = SKAction.runAction(fadeIn, onChildWithName: "shareButton")
let bringInExitButton = SKAction.runAction(fadeIn, onChildWithName: "exitButton")
let bringInUIButtons = SKAction.sequence([
bringInRestartButton,
wait,
bringInShareButton,
wait,
bringInExitButton
])
runAction(bringInUIButtons)
关于swift - SpriteKit SKSequence 使 UI 按钮出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35105099/