gpt4 book ai didi

Swift,从数组中连续播放多个动画?

转载 作者:搜寻专家 更新时间:2023-11-01 06:27:21 26 4
gpt4 key购买 nike

抱歉,我是 swift 的新手。我无法让每个动画连续播放而不是同时播放。我试过使用 sleep(),但那似乎不允许播放动画。这就是我找到要播放的动画的方式。

for number in sequence {
switch number {
case 1:
print("blue")
animateB()
case 2:
print("green")
animateG()
case 3:
print("magenta")
animateM()
case 4:
print("orange")
animateO()
case 5:
print("yellow")
animateY()
case 6:
print("red")
animateR()
case 7:
print("purple")
animateP()
case 8:
print("cyan")
animateC()
default:
print("error")
}
}

这是我用来制作动画的功能之一。我意识到这也可能非常低效,但不确定如何使功能更好。

private func animateB(){
let animation = CABasicAnimation(keyPath: "transform.scale")
animation.toValue = 1.3
animation.duration = 0.5
animation.autoreverses = true
self.pulsatingB.add(animation, forKey: "pulsing")
}

如果有任何帮助,我们将不胜感激。 :)

最佳答案

您可以使用 CATransaction 链接 CAAnimation:

class ViewController: UIViewController {

// The animations, to be applied in order
var animationQueue = [() -> Void]()

@IBAction func animate(_ sender: Any) {

animationQueue.removeAll()

// Build the animation queue
for number in sequence {
switch number {
case 1:
print("blue")
animationQueue.append(animateB)
case 2:
print("green")
animationQueue.append(animateG)
// ....
default:
break
}
}

// Start the animation
applyNextAnimation()
}

func applyNextAnimation() {
guard !animationQueue.isEmpty else { return }
let animation = animationQueue.removeFirst()

// When an animation completes, call this function again to apply the next animation
CATransaction.begin()
CATransaction.setCompletionBlock({ self.applyNextAnimation() })
animation()
CATransaction.commit()
}

}

关于Swift,从数组中连续播放多个动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52395791/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com