Хорошо, я думаю, что теперь понимаю вашу проблему - из вашего заявления " [...] но похоже, что я установил последнее изображение в последовательности jumpImages вместо ", я думаю, вы означает, что когда вы вызываете startAnimation (index: 1) , вы видите только последний кадр анимации с индексом 0 и ни одну из анимаций с индексом 1.
Предполагая, что это правильно, ваша проблема здесь будет в состоянии гонки.
Когда вы вызываете startAnimation () , а затем во второй раз с индексом 1, первая анимация может продолжаться или не выполняться.
Решением будет вызов self.imageView.stopAnimating () до того, как вы измените все изображения и запустите новую анимацию. Рекомендуется проверять флаг imageView.isAnimating перед его вызовом. Примерно так:
func startAnimation(index: Int) {
var jumpImages = ["Jump_1","Jump_2","Jump_3","Jump_4","Jump_5","Jump_6","Jump_7","Jump_8","Jump_9","Jump_10"]
if index == 1 {
jumpImages = ["Jump_11","Jump_21","Jump_31","Jump_41","Jump_51","Jump_61","Jump_71","Jump_81","Jump_91","Jump_101"]
}
var images = [UIImage]()
for image in jumpImages{
images.append(UIImage(named: image)!)
}
if self.imageView.isAnimating {
self.imageView.stopAnimating()
}
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()
}
startAnimation(index: 0)
...
startAnimation(index: 1)
Кроме того, поскольку вы находитесь в функции, а не в замыкании, вы можете удалить все эти ссылки на self. , что делает вещи немного короче:
func startAnimation(index: Int) {
var jumpImages = ["Jump_1","Jump_2","Jump_3","Jump_4","Jump_5","Jump_6","Jump_7","Jump_8","Jump_9","Jump_10"]
if index == 1 {
jumpImages = ["Jump_11","Jump_21","Jump_31","Jump_41","Jump_51","Jump_61","Jump_71","Jump_81","Jump_91","Jump_101"]
}
var images = [UIImage]()
for image in jumpImages{
images.append(UIImage(named: image)!)
}
if imageView.isAnimating {
imageView.stopAnimating()
}
imageView.frame.origin.y = imageView.frame.origin.y + 100.0
imageView.animationImages = images
imageView.animationDuration = 2.0
imageView.animationRepeatCount = 1
imageView.startAnimating()
}
startAnimation(index: 0)
...
startAnimation(index: 1)