Шагающий человек пример:
Я имел дело с точно такими же задачами, но я должен был сделать бегущую пауку, который 6 ножки ходьбы и имеет 12 кадров. На самом деле это было очень сложно сделать, и мне потребовалось несколько месяцев, чтобы совершенствоваться. Дело в том, что пример бодрствующего человека обычно делается путем установки массива кадров изображений (первый этап, последний этап) в свойство animationImages UIImageView. Затем вы включаете и выключаете анимацию вместе с движущимся персонажем справа и слева и тем самым создаете иллюзию ходьбы. Теперь возникает большая проблема, когда вы хотите создать иллюзию ускорения. Невозможно изменить продолжительность анимации ВО ВРЕМЯ воспроизведения анимации, и это серьезная неудача, которую очень трудно преодолеть.
Вот код, который я продюсировал, чтобы преодолеть эту проблему:
Здесь Вы можете определить массив с кадрами ходьбы ноги, кадр за шагом.
animationImagesSpider = [NSArray arrayWithObjects:
[UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], [UIImage imageNamed:@"[email protected]"], nil];
Здесь вы присоедините массив в UIImageView:
imgViewSpider = [[UIImageView alloc] initWithFrame:CGRectMake(200,410,100,145)];
imgViewSpider.animationImages = animationImagesSpider;
Теперь, если вы просто звоните [imgViewSpider startAnimating]; это запустит анимацию с постоянной скоростью, пока вы ее не остановите. Для преодоления этого я использовал рекурсию, который играет короткую анимацию для каждого шага, и это позволяет регулирует длительность между каждыми шагами:
- (void) spiderRun {
imgViewSpider.animationDuration= 0.51-(accSp/3.5);
[imgViewSpider setAnimationRepeatCount:222]; /// this is a dummy value that has no effect because animtion ends after the first frame
[imgViewSpider startAnimating];
[self performSelector:@selector(spiderRun) withObject:nil afterDelay: 0.5-(accSp/3.5)];
}
Постоянно меняя значение accSp, я могу контролировать скорость ходьбы во время ходьбы ,
Фактически я думаю, что он имел в виду перевод, в математическом переводе движется объект к другой координате – MCKapur