【问题标题】:skLabelNodes only working sometimesskLabelNodes 有时只工作
【发布时间】:2017-05-22 21:10:25
【问题描述】:

所以我在代码中添加了两个标签节点,希望一个隐藏而另一个显示,然后在游戏开始后反之亦然。

class GameScene: SKScene {
    // Declarations
    let startLabel:SKLabelNode = SKLabelNode()
    let scoreLabel:SKLabelNode = SKLabelNode()
    var score = 0

    override func didMoveToView(view: SKView) {
        // Properties
        startLabel.fontSize = 20
        startLabel.fontColor = UIColor.blackColor()
        startLabel.position = CGPointMake(self.frame.width*0.5, self.frame.height*0.5)
        startLabel.text = "Touch Paddle To Begin"
        startLabel.hidden = false
        self.addChild(startLabel)

        scoreLabel.fontSize = 20
        scoreLabel.fontColor = UIColor.blackColor()
        scoreLabel.position = CGPointMake(self.frame.width*0.5, self.frame.height*0.75)
        scoreLabel.text = "\(score)"
        scoreLabel.hidden = true
        self.addChild(scoreLabel)

然后,当触碰 Paddle 时,将启动 moveBall() 函数并开始游戏。这是我交换标签的地方。

func moveBall() {

    // Setting Labels
    self.startLabel.hidden = true
    self.scoreLabel.hidden = false

    // Starting game
    self.ball.physicsBody?.dynamic = true

但是,它只在某些时候有效。它会完美运行,然后不做任何更改,我将再次运行它,并且只会显示一个标签。然后再次显示另一个标签,或者 startLabel 将仅显示一帧然后消失。

免责声明:我真的不知道如何编码,只是对游戏有了一个想法,并正在努力将其变为现实。抱歉,如果解决方案很简单。对我的代码的任何建议也将不胜感激。谢谢!

【问题讨论】:

  • 你在哪里调用 moveBall()?
  • 检查标签的 zPosition 并在您的 GameViewController.swift 中将 ignoreSiblingOrder 设置为 false?如果您有背景图片,我想知道是否有时可以在其后面绘制标签?

标签: swift sprite-kit sklabelnode


【解决方案1】:

根据给出的信息,它应该可以正常工作。但是,您应该在 touchesBegan 方法中调用 moveBall()。不是更新方法。

此外,如果您希望在用户触摸 labelNode 时调用它,则使用开始触摸的位置。 (但我宁愿使用精灵而不是标签,因为标签有点反应迟钝,因为有时手指不会触摸标签。

所以用正确的方法调用 moveBall()。提供更多信息以提供更准确的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多