所以我开始制作游戏,我想使用进度条作为许多不同事物的健康栏,我无法弄清楚为什么它根本没有更新。但是,它确实在viewdidload函数中更新。这是我正在使用的代码。
func updateHealthBars() {
hullHealthBar.setProgress(hullHealth/hullHealthMax, animated: true)
cannonsHealthBar.setProgress(cannonsHealth/cannonsHealthMax, animated: true)
sailsHealthBar.setProgress(sailsHealth/sailsHealthMax, animated: true)
crewHealthBar.setProgress(crewHealth/crewHealthMax, animated: true)
}
@IBAction func setSailButton(sender: AnyObject) {
if hullHealth > 0 {
hullHealth-=20
}
else if cannonsHealth > 0 {
cannonsHealth-=20
}
else if sailsHealth > 0 {
sailsHealth-=20
}
else if crewHealth > 0 {
crewHealth-=20
}
updateHealthBars()
}
当我按下按钮时,如果有人知道我需要做些什么来更新他们的健康状况,我会非常感激,因为我一直试图这样做一段时间但没有成功。我正在使用XCode 6。
答案 0 :(得分:2)
在Swift中,当使用不带小数的文字分配数字时,它使用Int。 ProgressView需要浮点数。请尝试以下方法:
func updateHealthBars() {
dispatch_async(dispatch_get_main_queue(), ^{
hullHealthBar.setProgress(hullHealth/hullHealthMax, animated: true)
cannonsHealthBar.setProgress(cannonsHealth/cannonsHealthMax, animated: true)
sailsHealthBar.setProgress(sailsHealth/sailsHealthMax, animated: true)
crewHealthBar.setProgress(crewHealth/crewHealthMax, animated: true)
});
}
@IBAction func setSailButton(sender: AnyObject) {
if hullHealth > 0.0 {
hullHealth-=20.0
}
else if cannonsHealth > 0.0 {
cannonsHealth-=20.0
}
else if sailsHealth > 0.0 {
sailsHealth-=20
}
else if crewHealth > 0.0 {
crewHealth-=20.0
}
updateHealthBars()
}
确保您的属性也是浮点数:
var hullHealth: Float = 0
或var hullHealth = 0.0
答案 1 :(得分:0)
我终于开始工作了。所以我原来的代码工作了。实际问题与我的按钮没有连接正确或某事有关,即使其他一切工作正常。我做了一个新按钮并在其中放入相同的东西,它工作正常。这是按钮的问题,而不是线程或任何东西。