Swift:从其他类

时间:2016-12-20 20:31:16

标签: ios swift class viewcontroller

我在SpriteKit游戏上工作,该游戏通过MultipeerConnectivity连接到另一台设备。我将所有的Connection内容放在一个额外的ConnectionManager.swift文件中来清理代码。

接收数据时,会调用ConnectionManager.swift类中的函数将数据转换为Float,并将值传递给GameScene.swift类中的函数。

GameViewController.swift:

class GameViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    let scene = GameScene(size: view.bounds.size)
    let skView = view as! SKView
    skView.showsFPS = true
    skView.showsNodeCount = true
    skView.ignoresSiblingOrder = true
    scene.scaleMode = .resizeFill
    skView.presentScene(scene)
  }
}

GameScene.swift:

class GameScene: SKScene {

var scoreLabel = SKLabelNode()    
let ConnectionsManager = ConnectionManager()

 func dummyText(Spieler: Int, Anweisung: Float) {
    print("dummyText")
    scoreLabel.text = String(Anweisung)
 }

ConnectionManager.swift:这是应该将值传递给GameScene()的函数.duadText()

class ConnectionManager: NSObject, MCSessionDelegate, MCNearbyServiceBrowserDelegate, MCNearbyServiceAdvertiserDelegate {

func session(_ session: MCSession, didReceive data: Data, fromPeer peerID: MCPeerID) {
    print("Etwas erhalten!")
    NSLog("%@", "Etwas erhalten!")
    // Trying with dummy Value
    GameScene().dummyText(Spieler: 1, Anweisung: 200 )
    }
}

通过使用GameScene(),我假设我创建了一个新实例,而不是使用已经显示并且我想要操作的GameScene。不幸的是我不知道如何正确使用不同的类。对我来说最好的解决方案是将ConnectionManager类称为GameViewController的某种ChildClass,所以我可以调用super.dummyText()之类的函数。

除了快速学习几周外,我还是个新手。我搜索了这个问题很长一段时间,我发现了一些结果,但没有解决方案对我有用。这就是我在这里发布一个新主题的原因。在此先感谢您的帮助!

0 个答案:

没有答案