2009-02-26 4 views
1

나는 애니메이션으로 만들고 싶은 다양한 UIImage 시퀀스를 가지고있다. 그것은 타이머를 사용하고 drawRect를하는 것은 몇 가지 perf 문제가 있음이 밝혀졌습니다.iPhone에서 2D 이미지 애니메이션을 구현하려면 어떻게해야합니까?

내 다음 단계는 UIImageView를 사용하여 조사하는 것이지만 animationImages 배열을 두 번 이상 업데이트하면 메모리 누수가있는 것 같습니다.

내 다음 단계는 CALayer와 CAAnimation을 사용하여 살펴 보았지만 문서를 빠르게 보았을 때 이미지간에 애니메이션을 적용하는 것이 아니라는 것을 나타냅니다. (메모, 나는 위치를 바꾸지 않습니다. 다른 것, 단지 이미지).

나는 올바른 길을 가고 있습니까? 아니면 다른 방향으로 조사해야합니까?

답변

1

정말 UIImageView에서 이미지 배열을 두 번 이상 업데이트해야합니까? 이미 일단 사용 된 애니메이션을 변경해야한다면 새로운 UIImageView를 만드는 것이 가장 좋을 것이라고 생각했을 것입니다.

UIImageView의 배열 애니메이션에서 메모리 누수가 있다고 들었지만 v2.0부터 사용 해왔고 큰 문제가 없었습니다. 물론 YMMV.

먼저 프레임 배열을 설정하려면 NSMutableArray를 UIImages (각 프레임 당 하나씩)로로드하고 UIImageView의 animationImages 속성으로 설정 한 다음 animationDuration 속성도 설정하십시오. startAnimating 메서드는 애니메이션을 만들 때마다 호출하면됩니다. 정상적으로 사용하면 일단 설정된 프레임 배열을 변경할 필요가 없습니다.

+0

나는 3 개의 다른 전체 화면 애니메이션을 가지고 있습니다 ... 지금은 3 개의 imageView를 가지고 있고 필요할 때 [bringToFront]를 호출하려고합니다. – Jonas

+0

다른 질문이 있지만 ... UIImageView의 애니메이션이 끝났을 때를 결정하는 방법이 있습니까? 문서에 콜백/위임자가 표시되지 않습니다. :/ – Jonas

+0

내 애니메이션은 꽤 작았습니다. 한 번에 여러 개의 전체 화면 애니메이션을 메모리에 보관하면 큰 성공을 거둘 수 있습니다. 행운을 빈다. 가능한 경우 각 UIImageView에 필요한 프레임을로드해야합니다. – philsquared

-1

저는 iPhone dev에 익숙하지 않지만 2 차원 애니메이션에 대해서는 스프라이트가 필요한 것 같습니다. 각 프레임을 포함하는 대형 이미지 파일로 한 번에 하나씩 만 표시합니다. 2-d 배열을 인덱싱하는 것과 마찬가지로 각 프레임의 픽셀 오프셋을 추적합니다.

관련 문제