2011-12-04 2 views
2

"SpeedBoat"키가있는 CAKeyframeAnimation을 CALayer에 추가했습니다. 이제 애니메이션 중에 애니메이션 속도를 변경하려고합니다.진행중인 CAKeyframeAnimation 애니메이션의 속도 변경

[[self.shipLayer animationForKey:@"SpeedBoat"] setSpeed:([[self.shipLayer animationForKey:@"SpeedBoat"] speed] + deltaTime)]; 

이 줄에는 오류가있는 것 같습니다. 하지만 디버그 정보를 얻지는 못합니다. 여기에 무슨 문제가 있습니까? 진행중인 애니메이션의 속도를 변경할 수 있습니까? 누군가가 나를 도울 수 있다면 :)

안부 젠

답변

2

예, 당신은 확실히 애니메이션의 속도를 변경할 수 있습니다

그것은 아주 좋은 것입니다. CAKeyframeAnimationCAMediaTiming 프로토콜을 확인하기 때문입니다.

Apple은 Animation Types and Timing Programming Guide에서 이것을 설명합니다.

Timing, Timespaces, and CAAnimation 섹션을 참조하십시오.

구체적 :

"는 애니메이션이나 층의 속도 특성이 배율을 지정하는, 예를 들어, (2)의 속도의 값을 갖는 timespace 가진 층에 부착되고 10 초 애니메이션 것이다. 해당 레이어의 하위 레이어에서 속도 계수 2를 정의하면 해당 애니메이션이 1/4 시간 (수퍼 레이어 속도 * 하위 레이어 속도)으로 표시됩니다. "

나는 이것을 다루는 훌륭한 비디오의 방향을 알려줄 수 있습니까? 당신도 효과적으로을 "동결"애니메이션의 속도를 변경할 수 있습니다

WWDC 2010 Sessions 424 and 425 Core Animation in Practice Parts 1 and 2

WWDC 2011 Session 421 Core Animation Essentials

Developer Videos Session 716 Core Animation Techniques for iPhone and Mac

:에서보세요. 일시 중지 및 다시 시작하는 데 매우 유용합니다. 한 가지주의 할 점은 앱이 백그라운드로 설정되거나 메모리에서 제거되면 제대로 작동하지 않는다는 것입니다. 수동으로 처리해야합니다.

Is there an issue with updating a CALayer position while the layer is paused?

:

Technical Q&A QA1673, 그 프로세스에 대한 자세한 정보를 원하시면이 질문에 대한 내 대답을 참조하십시오