我需要使图像跳动并随着动画向下移动。我正在使用精灵来显示跳转动画。但是,当我尝试将其与下移动画组合时,它不起作用。我正在尝试单击按钮。下面是我的代码。
我的动画在第二次单击时可以正常工作,但在第一次单击时,它会跳到当前位置,在第二次单击时,它会跳并向下移动。我试图使它跳跃并在第一次单击按钮时向下移动。
@IBAction func targetTouchAction(_ sender: Any) {
let images: [UIImage] = (1...10).map { return UIImage(named: "Jump_\($0)")! }
self.jackImage.frame.origin.y = self.jackImage.frame.origin.y + 100.0
self.jackImage.animationImages = images
self.jackImage.animationDuration = 2.0
self.jackImage.animationRepeatCount = 1
self.jackImage.startAnimating()
}
我从最近的两个三小时开始尝试,但是没有运气。
答案 0 :(得分:1)
您正在混合2种不同类型的动画。不要那样做使用animationImages
的{{1}}属性与使用UIImageView
动画方法(例如UIView
摆脱那个UIView.animate(duration:animations:)
动画包装,只需为图像视图指定动画图像和其他设置即可:
UIView
请注意,每次触发动画时都无需将图像数组加载到图像视图中,但是它仍然可以正常工作。
我还没有使用SpriteKit,所以我不确定您的图像视图动画将如何与之交互。 (此外,您没有显示代码的那一部分。)
此外,请注意,您可以使用1行代码创建图像数组,而无需使用硬编码的文件名数组:
@IBAction func targetTouchAction(_ sender: Any) {
let jumpImages = ["Jump_1","Jump_2","Jump_3","Jump_4","Jump_5","Jump_6","Jump_7","Jump_8","Jump_9","Jump_10"]
var images = [UIImage]()
for image in jumpImages{
images.append(UIImage(named: image)!)
}
self.imageView.frame.origin.y = self.imageView.frame.origin.y + 100.0
self.imageView.animationImages = images
self.imageView.animationDuration = 2.0
self.imageView.animationRepeatCount = 1
self.imageView.startAnimating()
}
该代码创建了一个从1到10的序列。然后,它使用map语句通过将该值输入一个字符串并将该字符串用作调用{{ 1}}