Я разрабатываю приложение для аквариума. Мне нужно генерировать движения рыб в нем. Рыба должна плавать и, дойдя до одного конца своего аквариума, должна сделать поворот(или флип) и переместиться на другой конец, снова повернуть(или флип) и вернуться в исходное положение.
Движение рыбы вперед работает нормально, и оно также поворачивается (переворачивается) при достижении его конца. но когда он достигает другого конца, анимация переворота и дальнейшая анимация внезапно пропускаются.
Ниже приведены коды, которые я использую.....
CGFloat originalChildXpos = fishView.frame.origin.y;
/************************************** Animation 1 **************************************************************/
[UIView animateWithDuration:15.0
delay:1.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
fishView.frame =CGRectMake(0, fishView.frame.origin.y, fishView.frame.size.width, fishView.frame.size.height);
}completion:NULL];
/*********************************** Animation 2 ****************************************************************/
[UIView animateWithDuration:2.4
delay:3.0
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
fishView.transform = CATransform3DGetAffineTransform(CATransform3DMakeRotation(M_PI, 0.0, 1.0, 0.0));
}completion:NULL];
/********************************* Animation 3 ****************************************************************/
[UIView animateWithDuration:10
delay:3.4
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
fishView.frame = CGRectMake(-aquariumView.frame.size.width, fishView.frame.origin.y, fishView.frame.size.width, fishView.frame.size.height);
}completion:NULL];
/*************************************** Animation 4 *****************************************************/
[UIView animateWithDuration:1.4
delay:13.4
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
fishView.transform = CATransform3DGetAffineTransform(CATransform3DMakeRotation(-M_PI, 0.0, 1.0, 0.0));
}completion:NULL];
/************************************* Animation 5 *******************************************/
[UIView animateWithDuration:13.8
delay:2.2
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
fishView.frame = CGRectMake(originalChildXpos, fishView.frame.origin.y, fishView.frame.size.width, fishView.frame.size.height);
}completion:NULL];
я думаю, что я что-то пропустил при использовании функции CATransform3DGetAffineTransform(CATransform3DMakeRotation())
, во второй раз флип-поворот.....
может ли кто-нибудь здесь показать мне выход из этого и объяснить, где я ошибаюсь
я также хотел бы знать, используя CATransform3D
для вращения, координатные оси относительно вида, к которым применяется преобразование, изменяются или выполняются ??
fishView
представлением? Вы используете его как слой. Кроме того, кадрирование и преобразование плохо сочетаются друг с другом. Вы не должны использовать их так (в документации даже так написано) - person David Rönnqvist   schedule 16.04.2013