UIImageView:Swift 4的移动和跳跃动画



我需要让我的图像随着动画跳跃和向下移动。我正在使用精灵来显示跳跃动画。但是,当我尝试将它与下移动画相结合时,它不起作用。我正在按一下按钮试试。下面是我的代码。

我的动画在第二次单击时可以正常工作,但在第一次单击时,它只是跳到当前位置,在第二次单击时它会跳并向下移动。我试着让它在第一次点击按钮时跳起来并向下移动。

@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()
}

从最近两三个小时开始,我一直在尝试这个,但运气不好。

您正在混合两种不同类型的动画。不要那样做。使用UIImageViewanimationImages属性与使用UIView动画方法(如UIView.animate(duration:animations:)(是分开的

去掉UIView动画包装,只需为您的图像视图指定动画图像和其他设置:

@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()
}

请注意,每次触发动画时将图像数组加载到图像视图中是不必要的,但它应该仍然有效。

我还没有使用过SpriteKit,所以我不确定你的图像视图动画将如何与之交互。(另外,你没有显示代码的那部分。(

此外,请注意,您可以使用1行代码创建图像阵列,而无需使用硬编码的文件名阵列:

let images: [UIImage] = (1...10).map { return UIImage(named: "Jump_($0)") }

该代码创建了一个从1到10的序列。然后,它使用map语句将该序列映射到图像数组中,方法是将值输入到字符串中,并在调用UIImage(named:)时使用该字符串作为图像名称

最新更新