如何在 swift 的场景转换过程中保持动作和动画的运行?

Posted

技术标签:

【中文标题】如何在 swift 的场景转换过程中保持动作和动画的运行?【英文标题】:How do I keep actions and animations running during a scene transition in swift? 【发布时间】:2016-01-27 16:50:05 【问题描述】:

我有一个重试按钮,它正在旋转,当按下它时,会使用GameView.presentScene(GameScene, transition: SKTransition.fadeWithDuration(2)) 呈现一个新场景。当发生这种转变时,旋转停止。我的目标是保持按钮旋转,直到 GameScene 完全呈现。如果有帮助,这一切都在基于 SpriteKit 的游戏中完成。任何帮助将不胜感激! 谢谢:-)

【问题讨论】:

***.com/questions/24891863/…的可能重复 【参考方案1】:

将转换对象的pausesOutgoingScene 属性设置为false。

var transition = SKTransition.fadeWithDuration(2)
transition.pausesOutgoingScene = false
//transition.pausesIncomingScene = false //Uncomment if you want both to animate
GameView.presentScene(GameScene, transition: transition )

【讨论】:

太棒了,我什至不知道这个,我想我应该阅读更多的苹果文档。我刚刚回答了 OPs 的问题,但现在将编辑我的答案,因为你的答案显然更好。【参考方案2】:

编辑:您总是在堆栈溢出时学到一些东西,感谢 KnightOfDragon 的回答,这比我的回答要好得多。

你可以使用 UIKit 元素

创建一个全局属性

 unlockButton: UIButton!

并在你的场景中设置它

 unlockButton = UIButton(type: UIButtonType.System) as UIButton
    unlockButton.frame = CGRectMake(width * 2, height * 2, width, height)
    unlockButton.backgroundColor = SKColor.clearColor()
    unlockButton.layer.borderColor = SKColor.blackColor().CGColor
    unlockButton.layer.borderWidth = DeviceManager.convertCGFloat(1)
    unlockButton.layer.cornerRadius = DeviceManager.convertCGFloat(2)
    unlockButton.setTitle("ButtonTitle", forState: .Normal)
    unlockButton.titleLabel?.font = UIFont(name: "YourFont", size: 14)
    unlockButton.setTitleColor(UIColor.blackColor(), forState: .Normal)
    unlockButton.addTarget(self, action: "unlockButtonPressed:", forControlEvents: UIControlEvents.TouchUpInside)
    self.view.addSubview(unlockButton)

比使用类似的东西

 CGAffineTransformMakeRotation

 UIView animateWithDuration

让它旋转。

过渡完成后,您应该能够将其删除

 unlockButton.removeFromSuperView()

来自新场景。

【讨论】:

以上是关于如何在 swift 的场景转换过程中保持动作和动画的运行?的主要内容,如果未能解决你的问题,请参考以下文章

使用完成处理程序在 Swift 中调用连续动画

如何将SpriteKit中的单个游戏场景添加到普通的单视图Swift应用程序中

Swift2:TKSubmitTransitionButton。当用户登录/注册不正确时,如何停止按钮的转换/动画

在 Swift 中使用 CoreAnimation 为 UILabel 元素设置动画

动作脚本 3. 在 gotoAndStop() 之后动画永远循环,并且在动画过程中当角色发生碰撞时会有延迟

如何创建转换为单张材料的浮动动作按钮