我有一个非常简单的SpriteKit游戏,用Swift编写,其中有两个场景,我正试图在两者之间进行转换。这段代码工作得很完美:
let skView = self.view as SKView
let scene = GameScene(size: self.scene.size)
scene.size = skView.bounds.size
scene.scaleMode = .AspectFill
//This line shows the new scene immediately (as expected)
skView.presentScene(scene) 当我用以下代码替换上面的代码时,麻烦就来了:
let sceneTransition = SKTransition.doorsCloseHorizontalWithDuration(2.0)
skView.presentScene(scene, transition: sceneTransition)当我这样做时,什么都不会发生(当前的场景仍然在屏幕上)。我尝试过几次不同的转换,但总是有相同的结果。
有什么想法吗?
发布于 2014-08-09 17:48:38
解决了。
事实证明,上面的代码没有什么问题。问题是,我试图根据某个SKPhysicsBody的位置在更新函数中执行它。转换不是瞬间发生的,因此它给了更新被重复调用的时间,这会一次又一次地重新触发转换。这导致了这种转变从未发生过。
修正是添加一个bool来检查我是否已经启动了转换,所以我只尝试了一次。
发布于 2014-09-18 22:15:59
如果有其他人经历过这种情况,你可能也想暂停即将离开的场景。其中的一些逻辑可能是改变状态或干扰过渡。
试着设置
transition.pausesOutgoingScene = YES;看看能不能帮上忙,
或者使用它作为解决方案,如果这是您的意图,或者设置断点(在创建转换之后尝试update: )并查看发生了什么。
https://stackoverflow.com/questions/25215517
复制相似问题