2014-07-11 56 views
0

我該如何去SpriteKit(Swift中)的舊場景?我在場景1中,我暫停了它,然後移動到場景2,然後我想回到scene1,然後繼續。我不想再重新創建它。 謝謝。我如何回到SpriteKit中的舊場景?

編輯:

所以,我嘗試這樣做: 在secondScene類我把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 */ 

}} 

,然後在FirstScene類(其中我有一移動球),在touchBegan方法我有這個

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 } 



    } 
} 

但是,當我在SecondScene類我叫self.view.presentScene(oldScene)移動喲頭等艙,我有兩個移動的球: - ??

我不能使用類變量,Xcode不支持。

回答

0

你必須保持你的舊場景的參考四周,然後當你想搬回它,只需在您的SKView實例調用

skView.presentScene(firstScene) 

有幾種方法可以保持對你的課程的引用。您可以使用Singleton,或者僅使用class type property的類來存儲引用並從任何地方訪問它。

+0

而我我怎麼做以及以何種方式?謝謝 – Ciprian

+0

你是如何轉移到你的第二個場景的? – Vingdoloras

+0

從MyScene,在touchBegan方法我創建了一個新的變種SCENE2 = SecondScene(尺寸:self.size),然後我打電話self.view.presentScene(SCENE2) – Ciprian

0

我通過在第二個場景中擁有一個公共屬性來解決此問題。 然後用它來呈現第一個場景。

所以在第一個場景,當你想顯示第二場面....

if let scene = SKScene(fileNamed: "SecondScene") as! SecondScene? 
{ 
    scene.parentScene = self 
    self.view?.presentScene(scene) 
} 

這下面的代碼是在SecondScene。 當準備返回到第一現場,只要調用方法showPreviousScene()...

public var parentScene: SKScene? = nil 

private func showPreviousScene() 
{ 
    self.view?.presentScene(parentScene!) 
}