嗨,我是Swift的新手,我想为iPhone创建一个色彩记忆游戏,其中您的应用为您提供了一系列颜色,您必须通过按右按钮来重复它。每当您按上一个序列的右键时,该序列就变得越来越长。
我希望该应用通过在按钮上使用动画来显示按下了哪个按钮。序列将使按钮闪烁,然后用户可以重新创建序列。
我有一个执行flash()的方法,该方法是类的一部分,该类是UIButton的扩展
COALESCE(MIN(D), '2119-01-01')
当我对一系列按钮执行此方法时,它会同时闪烁按该顺序编写的所有按钮。当然,这不是我想要的方式,我希望按钮一个接一个地闪烁。
func flash() {
let flash = CABasicAnimation(keyPath: "opacity")
flash.duration = 0.2
flash.fromValue = 1
flash.toValue = 0.1
flash.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut)
flash.autoreverses = true
flash.repeatCount = 1
layer.add(flash, forKey: nil)
}
当我执行此代码按钮时,1,2和3同时闪烁。有没有办法来解决这个问题?还是动画不是循环序列的正确方法。
答案 0 :(得分:1)
尝试一下
var currentButtonIndex = 0
func doPattern()
{
let currentButton = self.buttons[self.currentButtonIndex]
UIView.animateKeyframes(withDuration: 1, delay: 0, options: [.autoreverse], animations: {
currentButton.alpha = 0
}) { (complete) in
currentButton.alpha = 1
if self.currentButtonIndex == self.buttons.count - 1
{
self.currentButtonIndex = 0
return
}
self.currentButtonIndex += 1
self.doPattern()
}
}