gpt4 book ai didi

ios - 在 UILabel 上添加和删除动画

转载 作者:行者123 更新时间:2023-11-29 00:57:47 25 4
gpt4 key购买 nike

我正在创建一个英语打字游戏。单词从键盘的顶部到边缘。为了对我使用的标签的下落进行动画处理:

UIView.animateWithDuration(25, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: {

label.frame = CGRectMake(self.view.frame.width - (label.frame.origin.x+label.frame.width), self.view.frame.height-self.keyboardYPosition!, label.frame.width, width)

}){(success) in

label.removeFromSuperview()

for label in self.currentLabelsArray {
label.layer.removeAllAnimations()
label.removeFromSuperview()
}
self.gameOver()


}

一切顺利。我面临的问题是:我在创建每个标签时调用这个动画 block 。实际上这个动画 block 位于一个名为 createLabels() 的函数中。使用 NSTimer 每 5 秒调用一次 createLabel 函数。游戏结束后,我会显示上面的 View ,并带有重新启动按钮。现在问题来了:

在游戏结束之前,我们可能已经创建了 3-4 个标签,并将其推送到动画 block 中。但第一个标签可能会结束游戏。我在其上方看到一个游戏结束 View ,并带有重新启动按钮。一旦我点击重新启动,我的游戏就会再次结束,因为之前创建的标签仍在调用 UIAnimation 的完成 block 。除非我的所有标签都完成了动画,否则我无法重新启动游戏。

有没有办法在游戏完成后移除动画,这样已经创建的标签就不会再进入完成 block ?

我使用以下代码从 View 中删除标签并删除其动画:

for label in self.currentLabelsArray {
label.layer.removeAllAnimations()
label.removeFromSuperview()
}

最佳答案

一个快速的猜测是,也许您错过了使计时器对象无效的操作。

for label in self.currentLabelsArray {
label.layer.removeAllAnimations()
label.removeFromSuperview()
}
myTimer.invalidate();

因此计时器不会在 5 秒后调用 createLabels。游戏重新开始后重新安排时间。

希望对您有所帮助!

编辑:

另一个指针可能是清除标签数组。

self.currentLabelsArray.removeAllObjects();

调用self.gameOver() 当且仅当,队列中没有游戏结束请求。

编辑:

UIView.animateWithDuration(25, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: {

label.frame = CGRectMake(self.view.frame.width - (label.frame.origin.x+label.frame.width), self.view.frame.height-self.keyboardYPosition!, label.frame.width, width)

}){(success) in

//label.removeFromSuperview()

for label in self.currentLabelsArray {
label.layer.removeAllAnimations()
label.removeFromSuperview()
}

if(self.currentLabelsArray.count > 0) {
self.currentLabelsArray.removeAllObjects()
self.gameOver()
}

}

关于ios - 在 UILabel 上添加和删除动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37454681/

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