如何在 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 的场景转换过程中保持动作和动画的运行?的主要内容,如果未能解决你的问题,请参考以下文章
如何将SpriteKit中的单个游戏场景添加到普通的单视图Swift应用程序中
Swift2:TKSubmitTransitionButton。当用户登录/注册不正确时,如何停止按钮的转换/动画
在 Swift 中使用 CoreAnimation 为 UILabel 元素设置动画