gpt4 book ai didi

swift - 使用 SKAction 调用带参数的函数

转载 作者:搜寻专家 更新时间:2023-11-01 06:02:32 28 4
gpt4 key购买 nike

我正在尝试通过采用 1 个输入参数的 SKAction 调用函数。

当我声明 SKAction 时,出现错误:“无法将类型 '()' 的值转换为预期的参数类型 '() -> Void'

self.run(SKAction.repeat(SKAction.sequence([SKAction.wait(forDuration: 1), SKAction.run(self.decreaseHealth(by: 5.0))]), count: 10))

func decreaseHealth(by amount: Double){
print(health)
health -= amount
print(health)
let percentageToDecrease = amount / totalHealth
let resizeAction = SKAction.resize(toHeight: CGFloat(600*(1-percentageToDecrease)), duration: 1)
let redAmount: CGFloat = CGFloat(1.0 - health / totalHealth)
let greenAmount: CGFloat = CGFloat(health / totalHealth)
let recolorAction = SKAction.colorize(with: UIColor(red: redAmount, green: greenAmount, blue: CGFloat(0.0), alpha: CGFloat(1.0)), colorBlendFactor: 0, duration: 1)

healthBar.run(SKAction.group([resizeAction, recolorAction]))

}

最佳答案

通常,当您遇到该错误时,这仅意味着您需要将函数括在大括号内。所以:

self.run(SKAction.repeat(SKAction.sequence([SKAction.wait(forDuration: 1), SKAction.run( { self.decreaseHealth(by: 5.0) } )]), count: 10) )

如果你把它分成多行,它会更容易被发现。

这是因为 decreaseHealth() 类型,但是 { decreasHealth }() -> ()() -> Void

(闭包在 Swift 中是函数类型,因此具有参数/参数和返回值)

关于swift - 使用 SKAction 调用带参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45404561/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com