【发布时间】:2015-09-27 07:52:25
【问题描述】:
我的动画过快了。我正在做一个模式匹配游戏,我有 4 个不同颜色的 UIView。我想让一个闪烁,然后大约一秒钟后,让另一个 UIView 闪烁。视图通过我的标签标识符闪烁,我已经为每个视图(1、2、3、4)设置了不同的值。似乎他们都在同时进行。我已经尝试过调整 animateWithDuration 函数的值,但这似乎没有帮助。
这是我的打印输出,因此您可以看到它以正确的顺序执行...
gary
3
gary
2
gary
2
gary
3
gary
2
func beginGame() {
var level = 5
for _ in 1...level {
self.randomNumber = Int(arc4random_uniform(4)) + 1
let originalColor:UIColor = self.view.viewWithTag(randomNumber)!.backgroundColor!
UIView.animateWithDuration(1, delay: 0, options: UIViewAnimationOptions.CurveEaseOut, animations: {
self.view.viewWithTag(self.randomNumber)!.backgroundColor = UIColor.whiteColor()
self.view.viewWithTag(self.randomNumber)!.backgroundColor = originalColor
print("gary")
}, completion: nil)
print(randomNumber)
enemyArray.append(randomNumber)
}
}
//新代码
func beginGame(){
var level = 5
for _ in 1...level {
self.randomNumber = Int(arc4random_uniform(4)) + 1
let originalColor:UIColor = self.view.viewWithTag(randomNumber)!.backgroundColor!
UIView.animateWithDuration(1, delay: 4, options: UIViewAnimationOptions.CurveEaseOut, animations: {
self.view.viewWithTag(self.randomNumber)!.backgroundColor = UIColor.whiteColor()
self.view.viewWithTag(self.randomNumber)!.backgroundColor = originalColor
print("gary")
}, completion: nil)
print(randomNumber)
enemyArray.append(randomNumber)
}
}
【问题讨论】:
-
您是否尝试过在 animateWithDuration 方法中增加延迟,以使四个不同的动画不会同时触发?
-
是的,我有。我玩过这两种价值观。
-
你实际上是在同时做所有的动画。 for 循环将所有动画排队,然后它们都同时运行。增加每一个的延迟,让它等到前一个完成。
-
我增加了延迟。它让一切都变得更慢,但就像你说的,它们似乎都在同时进行。
-
您还要在更改的颜色有机会生效之前重置每个视图的背景颜色。