2016-10-20 8 views
1

別のクラスから送信されたメッセージを表示しようとしています。私はこれを行う関数を使用しています。しかし、問題は、ViewControllerを変更するとメッセージが表示されないということです。他のクラスのラベルを関数で更新する

func showMessage(message: String, color: UIColor){ 

    messageLabel = SKLabelNode(fontNamed: "Verdana") 
    messageLabel.text = message 
    messageLabel.fontSize = 15 
    messageLabel.fontColor = color 
    messageLabel.position = CGPoint(x: self.size.width/2, y: self.size.height/2) 

    self.addChild(messageLabel) 
} 

(これらは、2つの異なるファイルとViewControllersある)助けるため

ありがとう:メッセージを表示する

StartViewController().showMessage(message: "Test Message", color: UIColor.green) 

:メッセージの設定

!あなたがメッセージを表示したい場合は

+0

'StartViewController()'新しい 'StartViewController'を初期化してからさメソッドを呼び出します。現在の 'StartViewController'を参照する必要があります。 – Caleb

+0

@Calebお返事ありがとうございます!私はそれをどうやってできるのか尋ねてもいいですか?私はこれについてGoogleでチュートリアルを見つけることができません。 –

+0

@stefffeyensこんにちはsteff、あなたはXCode 8 - ファイル - 新規 - プロジェクト(タブアプリケーション)で便利なプロジェクトを見つけ出し、ゲームを選択することができます。ここでは、「Hello world」というラベルを持つSpriteKitのデモがあります。それがあなたを助けることを願っています。 –

答えて

2

が、私はここだと思うshowMessage() FUNCを呼び出しますUIKitSpriteKitの間です。

ViewControllerにはメンバーがいませんaddChild、あなたはSKNodeオブジェクトについて話すと思います。 SpriteKitベース

、あなたがSKViewとしてビューをキャストする必要があり、すべての最初の、SKNode要素またはSKNodeを継承するオブジェクトを表示したい場合はの「Hello、例えば説明したように、その後SKSceneをインスタンス化し、提示世界」プロジェクト:

class GameViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     if let view = self.view as! SKView? { 
      // Load the SKScene from 'GameScene.sks' 
      if let scene = SKScene(fileNamed: "GameScene") { 
       // Set the scale mode to scale to fit the window 
       scene.scaleMode = .aspectFill 
       // Present the scene 
       view.presentScene(scene) 
      } 
      view.ignoresSiblingOrder = true 
      view.showsFPS = true 
      view.showsNodeCount = true 
     } 
    } 
} 
class GameScene: SKScene { 
    override func didMove(to view: SKView) { 
     print("This is my GameScene, here I could show my SKLabelNode") 
    } 
} 

また、SpriteKitベースにあなたが新しいSKSceneを提示したり、直接表示することができ、あなたの要素を表示するのViewControllerを変更する必要はありませんあなたも行うことができますあなたの機能についてあなたを助けるためにSKNode


func showMessage(message: String, color: UIColor,pos:CGPoint)->SKLabelNode{ 
     let messageLabel = SKLabelNode(fontNamed: "Verdana") 
     messageLabel.text = message 
     messageLabel.fontSize = 15 
     messageLabel.fontColor = color 
     return messageLabel 
} 

使用

let messagePos = CGPoint(x: self.size.width/2, y: self.size.height/2) 
let messageLabel = showMessage(message:"Test Message", color: UIColor.green, pos:messagePos) 
self.addChild(messageLabel) 
0

ストア存在財産プッシュで、新しいVCは/それは

self.startVC = StartViewController() 
self.navigationController?.pushViewController(self.startVC, animated: true) 

ほんの少し混乱がある

self.startVC.showMessage() 
関連する問題