SpriteKit SKSequence 使 UI Buttons 出现
Posted
技术标签:
【中文标题】SpriteKit SKSequence 使 UI Buttons 出现【英文标题】:SpriteKit SKSequence to make UI Buttons appear 【发布时间】:2016-01-30 17:57:28 【问题描述】:在我的 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
?我认为它会在开始序列中的下一个动作之前等待?
如何使下一个按钮出现在第一个按钮之后?
【问题讨论】:
【参考方案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)
【讨论】:
以上是关于SpriteKit SKSequence 使 UI Buttons 出现的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在使用 SpriteKit 的应用程序上使用 Xcode UI 测试?
是否可以使用SpriteKit在应用程序上使用Xcode UI Testing?
Gamecenter init/authentication 使 SpriteKit 的精灵运动滞后