2009-03-31 2 views
1

게임을 위해 여러 조각을 움직이게하고 그 조각을 다른 방향으로 움직여서 현재의 전체보기 애니메이션 방법이 더 이상 작동하지 않게하고 싶습니다.iPhone에서 여러 애니메이션을 어떻게해야합니까?

한 번에 여러 항목에 애니메이션을 적용하는 것이 가장 좋습니다. (2 차원 렌더링이므로 현재는 3D soltuions에 관심이 없습니다.)

고마워요!

+0

현재 사용중인 기술은 무엇이며 Core Animation을 사용해 보셨습니까? –

+0

저는 이미지를 가운데에 배치하는 단일 UI보기에서 핵심 애니메이션 변환을 사용하고 있습니다. – Skyler

답변

8

여러 2D 개체를 한 번에 애니메이션으로 만드는 것은 비교적 쉽습니다. UIView를 애니메이션화하거나 CALayers를 애니메이션화하는 두 가지 방법이 있습니다. 내 테스트에서 두 가지 애니메이션을 적용 할 때 성능 차이는 거의 발견되지 않았습니다. 둘 다 iPhone에서 60fps로 동시에 움직이는 ~ 50 개의 오브젝트를 지원하는 것 같습니다.

이 UIViews 일련의 애니메이션을 조정하려면 커밋/시작 애니메이션 블록에서보기 형상에 변경 사항을 포장 할 수 있습니다 :

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:ANIMATIONDURATIONINSECONDS]; 

view1.frame = CGRectMake(newX1, newY1, view1Width, view1Height); 
view2.frame = CGRectMake(newX2, newY2, view2Width, view2Height); 
// Add other views here 

[UIView commitAnimations]; 

이 두 개 이상의 움직임을 조정한다 ANIMATIONDURATIONINSECONDS 초 동안 새로운 위치로 직선으로 이동합니다. 뷰를 서로 독립적으로 이동하려면 각 뷰에 별도의 애니메이션 블록을 만듭니다.

애니메이션을보다 잘 제어하거나 크로스 플랫폼 Mac/iPhone UI 코드를 만들려면 Core Animation CALayers를 사용할 수 있습니다. CALayers는 기본적으로 애니메이션이므로 설정하면

layer.position = CGPointMake(newX, newY); 

레이어가 자동으로 새 위치로 움직입니다. 기본적으로 레이어의 위치는 중심을 기준으로하며 anchorPoint 속성을 0,0으로 설정하여 레이어를 원래의 원점 위치로 변경할 수 있습니다. 당신이 CABasicAnimations 및 CAKeyframeAnimations를 만들 수 있습니다, 고급 애니메이션

[CATransaction begin]; 
[CATransaction setValue:[NSNumber numberWithFloat:ANIMATIONDURATIONINSECONDS] forKey:kCATransactionAnimationDuration];  
layer1.position = CGPointMake(newX1, newY1); 
layer2.position = CGPointMake(newX2, newY2); 
[CATransaction commit]; 

특정 타이밍 및 가속/감속 복잡한 경로를 따라로 이동하기 위해 레이어들을 적용

당신은 CATransaction를 사용하여 레이어 애니메이션을 조정할 수 있습니다 .

+0

브래드 감사합니다. 매우 도움이됩니다! – Skyler

0

당신은 Cocos2D-iphone 프로젝트를 보았습니까?

나는 사용하기가 매우 쉽고 손에서 많은 일을합니다.

Cocos2D iPhone

은 또한 애니메이션을 많이 수행하고 당신은 당신이 함께 묶을 수의 애니메이션 시퀀스를 생성 할 수 있습니다.