Swift动画在while循环中不会更新

时间:2020-07-21 22:26:50

标签: swift animation

我是Swift的新手。我正在尝试在while循环内为对象设置动画,但是直到while循环完成后屏幕才更新。如果我通过重复单击一个按钮来运行while循环所处的功能,则它确实可以工作,但是我希望它自己运行。我尝试在每个循环中加载屏幕,但是没有用。

 func moveBall() {
  while loopnumb <= 100 {
    loopnumb += 1
    print("animation loop cycled \(loopnumb) times")
    
    print("inside of moveball() before startanimation, scratchX is \(scratchX), scratchY is \(scratchY), and the direction is \(direction).")
    let animator = UIViewPropertyAnimator(duration: 0.5, curve: .linear) {
        self.direckEffeck()
        self.scratch.frame = CGRect(x: self.scratchX, y: self.scratchY, width: 240, height: 128)
        print("after and inside of animation command, scratchX is \(self.scratchX), scratchY is \(self.scratchY), and the direction is \(self.direction).")
    }
    animator.startAnimation()
    if checkForOOBX() == true && checkForOOBY() == false {
        direckCheckX()
    }
    if checkForOOBY() == true && checkForOOBX() == false {
        direckCheckY()
    }
    if checkForOOBX() == true && checkForOOBY() == true {
        if direction == 0 && done == false {
            direction = 2
            done = true
        }
        if direction == 1 && done == false {
            direction = 3
            done = true
        }
        if direction == 2 && done == false {
            direction = 0
            done = true
        }
        if direction == 3 && done == false {
            direction = 1
            done = true
        }
        cornerTouches += 1
        print("ebic win, gamer's! the amount of corner touches is \(cornerTouches)")
    }
    done = false
    DispatchQueue.main.async() {
        self.scratch.setNeedsDisplay()
    }
  }
  loopnumb = 0
}

请注意,我要移动的对象称为“ scratch”,其坐标为scratchX,scratchY。预先谢谢你。

0 个答案:

没有答案
相关问题