2010-11-22 3 views
2

안녕하세요 저는 CGAffineTransform 애니메이션과 완전히 혼동합니다. 스프라이트를 오른쪽 위치에서 왼쪽 위치로 이동하면됩니다. 멈췄을 때 나는 그것을 "리셋"하고 싶습니다. 즉, 시작한 곳으로 다시 이동하고 싶습니다. 응용 프로그램이 종료되면 (멀티 태스킹) 시작 위치를 다시 재설정하고 애니메이션을 반복하고 싶습니다. 나는 그에게 CGAffineTransforms 알고있는 것처럼iPhone 도움말 애니메이션 CGAffineTransform 재설정 중?

이 내가 애니메이션을 만들기 위해 사용하고 무엇을 ..

[UIImageView animateWithDuration:1.5 
            delay:0.0 
           options:(UIViewAnimationOptionAllowUserInteraction | 
              UIViewAnimationOptionCurveLinear 
             ) 
           animations:^(void){ 

            ufo.transform = CGAffineTransformTranslate(ufo.transform, -270, 100); 

           } 
           completion:^(BOOL finished){ 
            if(finished){ 
             NSLog(@"ufo finished"); 

             [self ufoAnimationDidStop]; 
            } 
           }]; 

은 시각적으로 이동있어 실제로 이동하지 않습니다처럼 스프라이트의 모양을 만든다. 따라서 내가 위치를 재설정하려고 할 때

ufo.center = CGPointMake (355, 70);

아무 것도하지 않습니다.

은 내가 호출하는 경우, 뭔가 작업을 할

ufo.transform = CGAffineTransformTranslate (ufo.transform, 270, -100);

재설정됩니다. 문제는 내가 애니메이션을 통해 앱의 절반을 빠져 나갔다가 다시 시작할 때 반드시 처음부터 시작하지 않고 올바른 위치로 가지 않는다는 것입니다. 기본적으로 미쳐 버립니다!

적용된 변환을 제거하는 방법이 있습니까? 나는 타이머를 사용하는 것을 고려하고있다. 그러나이 방법이 효과가있을 때 바보처럼 보인다. 나는이 문제로 얼마 동안 고생하여 도움을받을 수있었습니다.

감사가 실제로 센터 또는 뷰의 경계를 변경하지 않는 뷰 변환을 적용하는

답변

4

; 보기가 화면에 표시되는 방식 만 변경됩니다. 변환을 다시 CGAffineTransformIdentity로 설정하여 "보통"처럼 보이게하려고합니다. 애니메이션을 시작하기 전에 애니메이션을 설정하고 애니메이션 효과를 원하는대로 설정할 수 있습니다.

+0

고맙습니다. 너무 오래되어서 고맙습니다. 한 가지 질문입니다.이 라인을 호출하기 전에 변형이 적용되었는지 확인할 수 있습니까? 아니면 필요합니까? 앱이 활성화되면 모든 애니메이션이 재설정되지만, 이미 변형되었을 수도 있고 변경되지 않았을 수도 있습니다. – user157733

+0

물론! CGAffineTransform 클래스의 메소드는 CGAffineTransformIsIdentity입니다. 나는 그것이 언제 사용되어야하는지 완전히 알지 못하지만, 현재 변환이 항등 변환인지 여부를 알려줄 것입니다. – GendoIkari