如何让SK序列在swift中运行

如何让SK序列在swift中运行,swift,xcode,sprite-kit,sequence,Swift,Xcode,Sprite Kit,Sequence,我在网上发现了这段非常有用的代码,但我在运行时遇到了麻烦。变量名都是正确的,并且我使用了print语句来确保它确实符合这个函数。它似乎没有在标签节点上运行序列。谢谢 func fadeOutInfoText(){ infoLabel1.removeAllActions() infoLabel2.removeAllActions() speechIcon.removeAllActions() let wait:SKAction = SKAction.wait(f

我在网上发现了这段非常有用的代码,但我在运行时遇到了麻烦。变量名都是正确的,并且我使用了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)   

}

这是序列的示例代码

    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)

让我知道它是否有用。

注意:这可能是一个评论(声誉还不够好:)


对第行执行上面的代码行(并在空场景中添加节点)会得到所需的结果。您可能不是从场景的
update(:)
方法调用此函数,因为这样可以防止标签和语音图标执行任何操作,因为在场景执行操作之前,操作已被删除(请参见)。确保在这组操作可以在其他地方完成之前,您没有删除所有操作并更改标签的alpha值。

发问者应该如何实现这一点还不完全清楚。我理解它应该如何工作,但对于我上面的示例,情况并非如此。我甚至尝试过这样做:“infoLabel1.run(SKAction.sequence([wait,fade,run])”,尝试跳过seq行,但仍然不起作用。标签节点仍在显示文本,而不是什么都没有。我也尝试了单独的SKAction,比如fade,但仍然没有。所以我的建议是在本地初始化SKSpritode,然后运行它。我尝试了一下,但仍然不起作用。我试着在序列中使用另一个节点,这很有效,所以我认为标签有问题。我在函数开始时打印标签,它确实说明了它的用途,所以我看不出它有什么问题。