我正在寻找让变量等于动画的方法。所以稍后我可以参考它并改变动画的速度。
// Image Animation
UIView.animate(withDuration: 2.5, delay: 0.8, options: [.repeat, .curveLinear], animations: {
self.image.frame = CGRect(x: 250, y: 1200, width: 45, height: 45)
}, completion: nil)
//功能速度检查
func speedcheck() {
if score > 25 {
Image.stopAnimating()
// Image Animation
UIView.animate(withDuration: 1.0, delay: 0.8, options: [.repeat, .curveLinear], animations: {
self.Image.frame = CGRect(x: 250, y: 1200, width: 45, height: 45)
}, completion: nil)
UIView.commitAnimations()
}
}
" Image.stopAnimating()"
如示例所示,此行不会停止先前在上面执行的动画,因为它不知道要停止什么。因此,我想知道如何定义初始动画,所以从那里我可以提高速度。
当分数大于25时,加速动画的最佳方式是什么?
任何帮助都将不胜感激。
答案 0 :(得分:0)
您实际上不需要将动画分配给变量。我认为这甚至不可能。
通过加快动画速度,您的意思是减少动画的持续时间。 要做到这一点,只需在全局变量中保持 animationDuration 值,例如 animationSpeed 。
只需在 UIView.animate()方法中使用此 animationSpeed 变量值作为持续时间参数。
宣布全球速度参数:
var animationSpeed = TimeInterval.init(5.0)
在UIView.animate()方法中使用它:
UIView.animate(withDuration: animationSpeed) {
}
现在,您可以在满足条件时更改此animationSpeed参数值:
if condition {
self.animationSpeed = TimeInterval.init(2.5)
}
当您将动画选项指定为.repeat时,在整个动画中将使用最初在进入动画块时捕获的值。这不是我们想要的。使用类似这样的东西
func animateView() {
UIView.animate(withDuration: self.speed, delay: 0.0, options: [.curveLinear], animations: {
// Your animation
}, completion: { flag in
if flag {
if speed > 25 {
self.speed = TimeInterval.init(2.0)
self.view.layer.removeAllAnimations()
}
self.animateView()
}
})
}