[ios]在其他类中用功能更新标签

标签: sprite-kit ios Swift
发布时间: 2017/4/3 21:13:23
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想显示一条消息,是从另一个类发送。我用一个函数来做到这一点。但问题是,消息不显示更改 ViewController 时。

设置邮件︰

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

显示消息︰

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)

谢谢你的帮助 !

解决方法 1:

我认为在这里有一点混淆UIKitSpriteKit之间。

A ViewController 没有成员 addChild ,我想你会说出 SKNode 对象。

SpriteKit ,如果你想要显示在 SKNode 元素或继承的对象 SKNode ,首先,你应该把你看做 SKView 然后实例化和目前 SKScene 所述,例如"Hello world"项目中︰

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你不需要更改 viewController 来显示您的元素,你可以提出一个新 SKScene 或直接显示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)
官方微信
官方QQ群
31647020