Я пытаюсь создать простую игру "бей-моль" с помощью SwiftUI. То, что я хочу сделать в приведенном ниже коде, - это каждый раз, когда отсчитывается второй таймер, один из членов массива resimler, который состоит из изменений resim1..resim9, чтобы иметь значение «mavis», которое является именем изображения в библиотеке.
Когда я печатаю (resimler), из вывода я вижу, что случайный элемент в этом массиве имеет значение "mavis", проблем там нет. Но связанное изображение () в теле не показывает изображение в симуляторе.
Например: ["", "mavis", "", "", "", "", "", "", ""]
Я вижу этот журнал в результат, но Image (resim2) не показывает изображение.
Как мне заставить его показать изображение?
Спасибо!
struct level1: View {
@State var resim1 = ""
@State var resim2 = ""
@State var resim3 = ""
@State var resim4 = ""
@State var resim5 = ""
@State var resim6 = ""
@State var resim7 = ""
@State var resim8 = ""
@State var resim9 = ""
@State var timecounter = 5
var timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()
func findMavis() {
var resimler = [self.resim1 , self.resim2 , self.resim3 , self.resim4 , self.resim5 , self.resim6 , self.resim7 , self.resim8 , self.resim9 ]
let randomResim = Int(arc4random_uniform(UInt32(resimler.count - 1)))
resimler[randomResim] = "mavis"
}
var body: some View {
VStack {
Text("\(timecounter) seconds remaining").padding(.bottom, 50).onReceive(timer) { input in self.timecounter -= 1
// the functions in this area will work every second
self.findMavis()
// the functions after this will work after the timer stops
if self.timecounter == 0 {
self.timer.upstream.connect().cancel()
}
}
HStack {
Image(resim1).resizable()
.frame(width: 100.0, height: 100.0).cornerRadius(50).onTapGesture {
if self.resim1 == "mavis" {
self.scoreUp() }
}
Image(resim2).resizable()
.frame(width: 100.0, height: 100.0).cornerRadius(50).onTapGesture {
if self.resim2 == "mavis" {
self.scoreUp() }
}
Image(resim3).resizable()
.frame(width: 100.0, height: 100.0).cornerRadius(50).onTapGesture {
if self.resim3 == "mavis" {
self.scoreUp() }
}
}
HStack {
Image(resim4).resizable()
.frame(width: 100.0, height: 100.0).cornerRadius(50).onTapGesture {
if self.resim4 == "mavis" {
self.scoreUp() }
}
Image(resim5).resizable()
.frame(width: 100.0, height: 100.0).cornerRadius(50).onTapGesture {
if self.resim5 == "mavis" {
self.scoreUp() }
}
Image(resim6).resizable()
.frame(width: 100.0, height: 100.0).cornerRadius(50).onTapGesture {
if self.resim6 == "mavis" {
self.scoreUp() }
}
}
HStack {
Image(resim7).resizable()
.frame(width: 100.0, height: 100.0).cornerRadius(50).onTapGesture {
if self.resim7 == "mavis" {
self.scoreUp() }
}
Image(resim8).resizable()
.frame(width: 100.0, height: 100.0).cornerRadius(50).onTapGesture {
if self.resim8 == "mavis" {
self.scoreUp() }
}
Image(resim9).resizable()
.frame(width: 100.0, height: 100.0).cornerRadius(50).onTapGesture {
if self.resim9 == "mavis" {
self.scoreUp() }
}
}
}
}
}