在我的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)
但它们都会立刻消失......尽管如此,作为我序列的一部分,我会在每个动作之间等待一秒钟。
我甚至试过这个:
//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
?我想它会在开始序列中的下一个动作之前等待吗?
如何在第一个按钮后显示下一个按钮?
答案 0 :(得分:1)
我认为问题在于你让每个按钮自己运行"淡入"行动,这意味着他们将并行执行他们的行动。如果您希望它们在场景中一次出现一个,则让场景运行该动作会更好。这是我的解决方案......
当您实例化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)