为什么这个SpriteKit程序没有绘制任何内容?

时间:2017-07-14 23:11:41

标签: swift macos sprite-kit

关联的ViewController是自动生成的默认值,并在GameScene对象上调用presentScene。我可以证明SKAction.run闭包运行,但SKLabelNode永远不会出现。黑屏。

BTW,由于与更复杂的项目相关的原因,我们想学习如何以编程方式创建SKScene,而不是使用Nib。这个测试项目没有Nib。

import SpriteKit

class GameScene: SKScene {
    var label : SKLabelNode?
    var mouseLife = 30

    override func didMove(to view: SKView) {
        label = SKLabelNode(text: "30")
        label?.alpha = 1.0
        label?.position = CGPoint(x: size.width / 2, y: size.height / 2)
        label?.fontSize = 10
        label?.color = NSColor.red
        scene?.addChild(label!)

        let wait = SKAction.wait(forDuration: 1)
        let tick = SKAction.run {
            self.mouseLife = self.mouseLife - 1
            self.label!.text = String(self.mouseLife)
            print("tick action ran")
        }
        let action = SKAction.sequence([wait, tick])
        let forever = SKAction.repeatForever(action)
        label!.run(forever)
    }
}

1 个答案:

答案 0 :(得分:0)

谢谢,流动性,您的评论有助于指出我正确的方向,并导致正确的实验。

事实上,错误甚至比这更糟糕:我的GameScene实例在初始化时没有给出大小,因此它默认为零。在实践中,这意味着整个显示器是一个逻辑像素,根据文本是否恰好覆盖(0,0)点,它可以是白色或黑色。

一旦问题得到解决,我们很快就可以围绕一个合适的锚点进行组织。