На основании правил казино вы должны определить результат вращения колеса после вращения вращения. Поэтому моя проблема заключается в том, как добиться такой анимации с использованием базовой анимационной техники c.
. Я пытался связать две анимации с использованием базовой c анимации.
static func createRotationAnimationLinear(currentAngle:CGFloat,distance:Double,duration:Double)->CABasicAnimation{
let animation = CABasicAnimation(keyPath: "transform.rotation")
animation.fromValue = currentAngle
animation.toValue = distance
animation.duration = duration
animation.timingFunction = CAMediaTimingFunction(name: .linear)
animation.fillMode = .forwards
animation.isRemovedOnCompletion = false
return animation
}
Когда анимация Запускает, я вызываю бэкэнд-сервис, чтобы получить результат вращения и запустить первую анимацию вращения.
Первая анимация с линейным замедлением и продолжается до тех пор, пока результат не будет возвращен из бэкэнда.
Как только результат возвращается, я запускаю другую анимацию на том же keyPath, но с разным замедлением, чтобы иметь эффект замедления и останавливаться на возвращенном результате вращения.
static func createRotationAnimation(currentAngle:CGFloat,distance:Double,duration:Double)->CABasicAnimation{
let animation = CABasicAnimation(keyPath: "transform.rotation")
animation.fromValue = currentAngle
animation.toValue = distance
animation.duration = duration
animation.timingFunction = CAMediaTimingFunction(controlPoints: 0.05, 0.05, 0.4, 1.0)
animation.fillMode = .forwards
animation.isRemovedOnCompletion = false
return animation
}
Но проблема в том, что переход от первой анимации ко второй не является бесшовным.
Есть идея, как добиться такого эффекта вращения.
Заранее спасибо