我正在尝试用我的应用中的5张图片制作动画。我想单击显示的图像,然后开始动画,该动画前后遍历数组,并在第一张图片上再次结束/停止。
到目前为止,我已经知道了-我从0循环到4,然后就一直在4和3之间循环。
您有什么想法我该如何解决?
谢谢!
struct ContentView: View {
@State private var activeImageIndex = 0
@State private var startTimer = false
let timer = Timer.publish(every: 0.15, on: .main, in: .common).autoconnect()
let myShots = ["MuscleUp1", "MuscleUp2", "MuscleUp3", "MuscleUp4", "MuscleUp5"]
var body: some View {
VStack {
Image(self.myShots[self.activeImageIndex])
.resizable()
.aspectRatio(contentMode: .fit)
.onReceive(self.timer) { time in
if self.startTimer {
if self.activeImageIndex != 4 {
self.activeImageIndex += 1
} else {
self.activeImageIndex -= 1
}
}
}
.onTapGesture {
self.startTimer.toggle()
}
}
.background(Color.blue)
}
}
答案 0 :(得分:0)
您似乎在用于递增activeImageIndex
的if语句中遇到问题:
if self.activeImageIndex != 4 {
self.activeImageIndex += 1
} else {
self.activeImageIndex -= 1
}
activeImageIndex
启动并成功进入4时,它将像这样运行:
if self.activeImageIndex != 4
4 == 4,因此输入else
情况self.activeImageIndex -= 1
,activeImageIndex
现在为3。
if self.activeImageIndex != 4
3!= 4,因此输入if
情况self.activeImageIndex += 1
,activeImageIndex
现在又是4。
然后重复一遍。
答案 1 :(得分:0)
您可以添加私有变量,例如。 digraph {
"complete" [xlabel=<<font color="green">Xcomplete</font>>
label="complete", fontcolor=red];
}
_up
并修改..
@State private var _up = true
......
.onReceive