El hombre que camina ejemplo:
He tratado con exactamente la misma tarea, pero tenía que hacer una araña corriendo que es 6 pierna pie y tiene 12 cuadros. Realmente fue muy difícil de hacer y me tomó unos meses perfeccionar. La cuestión es que el ejemplo del hombre que se está despertando normalmente se hace configurando una matriz de marcos de imagen (Pierna inicial, Última pata) en una propiedad de Imágenes de animación de UIImageView. Luego activa y desactiva la animación junto con el carácter en movimiento hacia la derecha y hacia la izquierda y creando así la ilusión de caminar. Ahora el gran problema surge cuando quieres crear una ilusión de aceleración. No hay forma de cambiar la duración de la animación DURANTE la reproducción de la animación y este es un revés importante que es muy difícil de superar.
Aquí está el código que produje para superar este problema:
Aquí se define una matriz con los marcos de las piernas para caminar, marco por paso.
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];
Aquí se adjunta la matriz al UIImageView:
imgViewSpider = [[UIImageView alloc] initWithFrame:CGRectMake(200,410,100,145)];
imgViewSpider.animationImages = animationImagesSpider;
Ahora bien, si sólo tiene que llamar [imgViewSpider startAnimating]; esto iniciará la animación a una velocidad constante hasta que la detengas. Para superar esto he utilizado una recursividad que reproduce una animación corta para cada paso y esto permite que ajusta la duración entre cada uno de los pasos:
- (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)];
}
Al cambiar constantemente el valor ACCSP, puedo controlar la velocidad de paseo durante la caminata .
en realidad, creo que se refería a la traducción, en matemáticas la traducción es mover un objeto a una coordenada diferente – MCKapur