Objective c 我如何回到SpriteKit的旧场景?
我怎样才能进入SpriteKit(斯威夫特)的旧场景?我在场景1中,我暂停了它,然后移动到场景2,我想回到场景1,我想继续。我不想再重现它了。 谢谢 编辑: 所以,我试过这个: 在第二个场景类中,我放置了oldScene SKScene属性和计算的setOldScene属性:Objective c 我如何回到SpriteKit的旧场景?,objective-c,swift,transition,scene,Objective C,Swift,Transition,Scene,我怎样才能进入SpriteKit(斯威夫特)的旧场景?我在场景1中,我暂停了它,然后移动到场景2,我想回到场景1,我想继续。我不想再重现它了。 谢谢 编辑: 所以,我试过这个: 在第二个场景类中,我放置了oldScene SKScene属性和计算的setOldScene属性: class SecondScene: SKScene { var oldScene:SKScene? var setOldScene:SKScene? { get {
class SecondScene: SKScene {
var oldScene:SKScene?
var setOldScene:SKScene? {
get { return oldScene }
set { oldScene = newValue }
}
init(size: CGSize) {
super.init(size: size)
/* Setup my scene here */
}}
然后,在第一个场景类中(我有一个移动的球),在touchStart方法中,我有这个
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
if(self.view.scene.paused) {
self.view.scene.paused = false
}
else {
self.view.scene.paused = true
}
var secondScene = SecondScene(size: self.frame.size)
secondScene.setOldScene = self.scene
if !transition { self.view.presentScene(secondScene, transition: SKTransition.doorsOpenHorizontalWithDuration(2)) ; transition = true }
}
}
但是,当我调用self.view.presentScene(oldsecene)在第二个场景类中,我在第一个类中移动你,我有两个移动的球:-
我不能使用类变量,Xcode还不支持。您必须保留对旧场景的引用,然后当您想返回到它时,只需调用
skView.presentScene(firstScene)
在您的SKView实例上
有几种方法可以保持对类的引用。您可以使用,或者简单地使用带有的类来存储引用并从任何地方访问它。我通过在第二个场景中使用公共属性解决了这个问题。 然后用它来呈现第一个场景 所以在第一个场景中,当你想展示第二个场景时
if let scene = SKScene(fileNamed: "SecondScene") as! SecondScene?
{
scene.parentScene = self
self.view?.presentScene(scene)
}
下面的代码在第二个场景中。
当准备返回第一个场景时,只需调用showPreviousScene()方法
我知道我是怎么做的,用什么方法?ThanksHow你转移到第二个场景了吗?从MyScene开始,在TouchBegind方法中,我创建了一个新的var scene2=SecondScene(大小:self.size),然后我调用self.view.presentScene(scene2)。你必须以某种方式将对第一个场景的引用带到第二个场景中,然后调用
self.view.presentscene1)
第二场内部。您可以访问视图的唯一其他位置是ViewController。我如何才能做到这一点?从第三天开始,我试着去寻找答案
public var parentScene: SKScene? = nil
private func showPreviousScene()
{
self.view?.presentScene(parentScene!)
}