2015-09-26 177 views
1

嘿,我正在測試我的遊戲在我的iphone上,我意識到我遇到了暫停按鈕的問題。爲什麼?因爲當我暫停遊戲並在返回遊戲時查找另一個應用程序而無需觸摸簡歷按鈕。 下面的代碼:暫停和恢復SKScene

class GameScene: SKScene, SKPhysicsContactDelegate{ 

var PauseButton = SKSpriteNode(imageNamed: "pause") 

var Resume = SKSpriteNode(imageNamed: "resume1") 
} 


init(size: CGSize, won: Bool) { 
    super.init(size: size)  
    //pause 

    PauseButton.position = CGPointMake(330, 700) 
    PauseButton.zPosition = 3; 
    PauseButton.size = CGSizeMake(40, 40); 
    PauseButton.name = "PauseButton" 

    self.addChild(PauseButton) 

    //resume 
    Resume = SKSpriteNode(imageNamed: "resume1") 
    Resume.position = CGPointMake(520, 450) 
    Resume.zPosition = 100 
    Resume.setScale(1.3) 

    } 

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    /* Called when a touch begins */ 

    show = self.scene as SKScene! 


    for touch in touches { 


     let Location:CGPoint = touch.locationInNode(self) 
     let Node:SKNode = self.nodeAtPoint(Location) 



     if(Node == PauseButton){ 


      self.show.paused = true 

      PauseButton.removeFromParent() 

      self.addChild(Resume) 

     } 

     if(Node == Resume){ 


      Resume.removeFromParent() 
      self.show.paused = false 

      self.addChild(PauseButton) 
     } 

任何幫助嗎?謝謝

回答

0

SpriteKit會自動恢復,當你回到你的應用程序。所以你需要:

第1步:創建一個變量:

var wasPaused : Bool = false 

第2步:改變它在你的暫停/恢復功能:

wasPaused = true // pause func 
wasPaused = false // resume fun 

第3步:在你的場景更新樂趣:

override func update(currentTime: CFTimeInterval) { 
    if isPausing{ 
     self.paused = true 
     return 
    } 
} 
0

暫停視圖不是場景。

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
    guard let view = view else { 
     return 
    } 

    view.paused = !view.paused 
}