Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 我如何回到SpriteKit的旧场景?_Objective C_Swift_Transition_Scene - Fatal编程技术网

Objective c 我如何回到SpriteKit的旧场景?

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 {

我怎样才能进入SpriteKit(斯威夫特)的旧场景?我在场景1中,我暂停了它,然后移动到场景2,我想回到场景1,我想继续。我不想再重现它了。 谢谢

编辑:

所以,我试过这个: 在第二个场景类中,我放置了oldScene SKScene属性和计算的setOldScene属性:

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!)
}