【问题标题】:How do I get SK sequences to run in swift如何让 SK 序列快速运行
【发布时间】:2020-05-26 10:20:15
【问题描述】:

我在网上找到了这个非常有用的代码,但我无法让它运行。变量名都是正确的,我已经使用了 print 语句来确保它确实进入了这个函数。它似乎没有在标签节点上运行序列。谢谢

func fadeOutInfoText(){

    infoLabel1.removeAllActions()
    infoLabel2.removeAllActions()
    speechIcon.removeAllActions()

    let wait:SKAction = SKAction.wait(forDuration: 0.5)
    let fade:SKAction = SKAction.fadeAlpha(to: 0, duration: 0.5)
    let run:SKAction = SKAction.run {

        self.infoLabel1.text = ""
        self.infoLabel2.text = ""
        self.infoLabel1.alpha = 1
        self.infoLabel2.alpha = 1
        self.speechIcon.alpha = 1
        self.speechIcon.isHidden = true
    }


    let seq:SKAction = SKAction.sequence([wait,fade,run])
    let seq2:SKAction = SKAction.sequence([wait,fade])

    infoLabel1.run(seq)
    infoLabel2.run(seq2)
    speechIcon.run(seq2)   

}

【问题讨论】:

    标签: swift xcode sprite-kit sequence


    【解决方案1】:

    注意:这将是一条评论(还没有足够的声誉:)

    逐行执行上述代码(并在空场景中添加节点)给出了看起来是所需的结果。大概你没有从场景的update(_:) 方法调用这个函数,因为这可以防止标签和语音图标做任何事情,因为在场景执行动作之前移除了动作(参见here)。在这组操作可以在其他地方完成之前,请确保您没有移除所有操作并更改标签的 alpha。

    【讨论】:

      【解决方案2】:

      这是 Sequence 的示例代码。

          let sprite = SKSpriteNode(imageNamed:"Spaceship")
      
          let scale = SKAction.scale(to: 0.1, duration: 0.5)
          let fade = SKAction.fadeOut(withDuration: 0.5)
          let sequence = SKAction.sequence([scale, fade])
      
          sprite.run(sequence)
      

      让我知道它是否有用。

      【讨论】:

      • 提问者应该如何实现这一点并不完全清楚。
      • 我了解它应该如何工作,但对于我上面的示例来说它并不适用。我什至尝试过这样做:'infoLabel1.run(SKAction.sequence([ wait , fade , run ]))' 尝试跳过 seq 行,但它仍然不起作用。标签节点仍然显示文本而不是什么。我也尝试过单独的 SKAction,比如淡入淡出,但仍然没有。
      • 所以我的建议是对 SKSpriteNode 进行本地初始化,然后运行它。
      • 我试了一下,还是不行。我尝试在序列中使用不同的节点,并且效果很好,这让我认为标签有问题。我在函数开始时打印出标签,它确实说明了它的含义,所以我看不到它遇到的问题。
      猜你喜欢
      • 2017-07-10
      • 1970-01-01
      • 2014-01-31
      • 2017-03-19
      • 2018-08-23
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      相关资源
      最近更新 更多