如何在swift中执行功能5秒

如何在swift中执行功能5秒,swift,algorithm,sprite-kit,skspritenode,Swift,Algorithm,Sprite Kit,Skspritenode,我正在创建一个游戏,这个功能是用来作为一个电源,以缩小精灵。我希望这个函数执行5秒,并将这个5秒计时器作为倒计时附加到标签上。 函数结束后,将精灵恢复为其原始大小 该函数只是通过设置比例来收缩节点 func shrinkShip(){spaceShip.scale(到:CGSize(宽度:60,高度:40))}您可以像这样设置视图的动画: UIView.animate(withDuration: 5, animations: { self.spaceShip.scale(to:

我正在创建一个游戏,这个功能是用来作为一个电源,以缩小精灵。我希望这个函数执行5秒,并将这个5秒计时器作为倒计时附加到标签上。 函数结束后,将精灵恢复为其原始大小

该函数只是通过设置比例来收缩节点


func shrinkShip(){spaceShip.scale(到:CGSize(宽度:60,高度:40))}

您可以像这样设置视图的动画:

UIView.animate(withDuration: 5, animations: {
        self.spaceShip.scale(to: CGSize(width: 60, height: 40))
},
completion: { _ in
    UIView.animate(withDuration: 2) {
        self.spaceShip.transform = .identity // Reset your view
    }
})

你可以试试这样的

UIView.animate(withDuration: 5, animations: {
        self.spaceShip.transform = CGAffineTransform(scaleX: 60, y: 40)
},
completion: { _ in
    UIView.animate(withDuration: 2) {
        self.spaceShip.transform = .identity // Reset your view
    }
})

坚持使用SpriteKit,我会做以下几点

func shrinkShip(duration: Double) { 

    let originalSize = spaceShip.size

    spaceShip.scale(to: CGSize(width: 60, height: 40)) 

    for x in 0..<Int(duration) {

        //increment the timer every 1 second for the duration
        self.run(SKAction.wait(forDuration: 1 * Double(x))) {
            self.timerLabel.text = String(Int(duration) - x)
        }
    }
    self.run(SKAction.wait(forDuration: duration)) {
        //return the spaceship to full size
        self.spaceShip.scale(to: originalSize) 
        //hide the timer
        self.timerLabel.text = ""
        self.timerLabel.isHidden = true
    }
}
func收缩(持续时间:双倍){
让originalSize=spaceShip.size
宇宙飞船.刻度(至:厘米尺寸(宽:60,高:40))

对于0中的x..spaceShip是一个SKSpriteNode,无法执行转换…我可以将其重新缩放回原始大小吗?而不是执行
transform=.identity
completion:{self.spaceShip.scale(original)}
谢谢,尝试实现此功能时,出现了一个错误,
操作员函数“…对不起,我在windows计算机上即兴写下了这一点。我编辑并将其插入xcode,现在它工作正常。我更改了uit将文本输出到标签的行。现在它向后走了。很幸运,从技术上讲,您正在背上两个问题这些问题应该作为单独的问题来问。你展示了你做了什么来尝试从一开始。而不是让别人为你做