概述
我正在使用#100daysofswiftui来学习SwiftUI,我正在32天学习。它是一个简单的标志游戏,包含我所在国家/地区的名称,并随机选择了正确的答案
@State private var paises = ["Poland", "Russia", "Spain", "UK", "US"].shuffled()
@State private var respuestaCorrecta = Int.random(in: 0...2)
然后我用forEach制作按钮
ForEach(0 ..< 3){ numero in
//right answer
if numero == self.respuestaCorrecta {
Button(action:{
self.BanderaSeleccionada(numero)
}){
Bandera(imagen: self.paises[numero])
} .rotation3DEffect(.degrees(self.GoodAnimationAmount),
axis: (x: 0, y: 1, z: 0))
} else {
Button(action:{
self.BanderaSeleccionada(numero)
}){
Bandera(imagen: self.paises[numero])
}
}
}
如果用户选择了右键,我会这样做:
func BanderaSeleccionada(_ numero: Int) {
if numero == respuestaCorrecta{
tituloPuntaje = "Respuesta correcta"
textoPuntaje = "¡Bien Hecho!"
self.puntaje += 1
self.GoodAnimationAmount += 360
withAnimation(.interpolatingSpring(stiffness: 5, damping: 1)) {
self.GoodAnimationAmount += 360
}
withAnimation {
self.TheOthersAnimationAmount -= 0.75
}
}else{
withAnimation{
self.WrongAnimationAmount += 4
}
tituloPuntaje = "Respuesta incorrecta"
textoPuntaje = "Has elegido \(paises[numero])"
}
mostrarPuntuajeMasAlto = true
}
做出正确的答案
问题
问题在于值的变化,如果下一个右按钮与最后一个按钮相同,则标志继续旋转,因此破坏了正确答案,当正确答案是另一个动画时,动画就消失了,所以我有点对Swift的工作方式感到困惑。
我现在能做的最好的事情就是删除.interpolatingSpring(stiffness: 2, damping: 1)
,但是当国家洗牌时,我想停止插补Spring。
func hacerPregunta() {
self.GoodAnimationAmount = 0
self.WrongAnimationAmount = 0
self.TheOthersAnimationAmount = 1.0
respuestaCorrecta = Int.random(in: 0...2)
paises.shuffle()
}
答案 0 :(得分:1)
跳到下一个问题时,应更新正确的答案 respuestaCorrecta = -1 ,而不是像这样的随机 respuestaCorrecta = Int.random(in:0 ... 2)