2016-06-18 10 views
0

어떻게 장면 외부에서 SpriteKit Scene을 업데이트 할 수 있습니까? 예 : UIButton을 눌러 SKLabelNode를 어떻게 업데이트합니까?외부 UIViewController에서 SpriteKit 장면의 노드 업데이트

장면

class GameScene: SKScene { 

    var myLabel:SKLabelNode = SKLabelNode() 

    override func didMoveToView(view: SKView) { 
     myLabel.text = "Initial State" 
     myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)) 
     self.addChild(myLabel) 
    } 

    func didPressButton() { 
     myLabel.text = "Pressed! " 
    } 

의 ViewController

import UIKit 
import SpriteKit 

class GameViewController: UIViewController { 

    @IBAction func didPressButton(sender: AnyObject) { 
     if let scene = GameScene(fileNamed:"GameScene") { 
      scene.didPressButton() 
     } 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     if let scene = GameScene(fileNamed:"GameScene") { 
      let skView = self.view as! SKView 
      skView.presentScene(scene) 
     } 
    } 

    … 

} 

내가 현장 내부의 일반적인 touchesBegan 장면 내부의 SKLabelNode를 업데이트 잘 작동하는지 이해합니다. 그러나 저는 특히 외부 이벤트에서 장면을 업데이트하는 데 관심이 있습니다. 어떤 아이디어?

protocol PauseBtnSelectorDelegate { 
    func didPressPauseBtn(pauseBtn:SKSpriteNode) 
} 

class HUD: SKNode { 
    var pauseBtnDelegate:PauseBtnSelectorDelegate? 
    var pauseBtn :SKSpriteNode! 
    ... 
    func pauseBtnTap(sender:SKSpriteNode) { 
     print("pauseBtn touched") 
     pauseBtnDelegate!.didPressPauseBtn(sender) 
    } 
} 

파일에서 사용자가 탭 이벤트에 통보 할 :

class GameScene: SKScene,PauseBtnSelectorDelegate { 
    var hud: HUD! 
    ... 
    override func didMoveToView(view: SKView) { 
     super.didMoveToView(view) 
     // Adding HUD 
     self.hud = HUD(currentScene: self,nodeSize: self.frame.size) 
     self.hud.pauseBtnDelegate = self 
     self.addChild(hud) 
    } 

    func didPressPauseBtn(pauseBtn:SKSpriteNode) { 
     print("pauseBtn touched") 
     // Pause the game 
    } 
} 
를 파일에서

답변

0

는 어디 버튼입니다