2009-06-17 5 views
4

코어 애니메이션을 사용하는 Leopard 용 스크린 세이버를 만들었습니다. 지나치게 복잡한 일은하지 않습니다. 하기 구조에서 데이터의 "테이블"을 생성하도록하고 CALayers CATextLayers 트리를 사용하여 한번에 스크린에 렌더링 50 CALayers 거기에서 가장화면 보호기의 육포/떨림 (코어) 애니메이션?

- root 
    › maincontainer 
    › subcontainer 
     › row [multiple] 
     › cell [multiple] 
      › text layer 

. 내가 CABasicAnimation을 사용하여보기에 "테이블", 나는 "하위 컨테이너"를 애니메이션을 추가 해요을 구축하면

. 다시 말하지만, 저는 단순한 페이드 인 (fade-in)과 같은 멋진 일을하지는 않습니다.

애니메이션이 발생하는 동안 문제가되는 것은 고통스러운입니다. 3GB RAM이 장착 된 3.06Ghz iMac 인 개발 기계에서는 약간의 변화가 있었지만 점차적 인 변화보다는 10 단계로 애니메이션을 잘라내는 것으로 보입니다.

그것은 스크린 세이버를 대상으로 한 PPC 맥 미니에 악화; 일반적으로 애니메이션 시작 부분 (0 % 불투명도)에서 절반 (50 %)까지 "트위닝"하여 애니메이션을 재생하는 것을 거부합니다.

나는 오브젝티브 -c 비교적 새로운 해요 내 경험 가비지 수집 환경을 사용하여 기반으로하지만 나는 화면 보호기가 같은 문제가 발생할 시작 지점에 충분한 메모리를 유출하고있어 믿을 수 없어.

또한, 나는 하드웨어와의 문제가되지 않습니다 확신 해요. 필자는 코어 애니메이션을 사용하는 빌트인 스크린 세이버를 테스트하고 비교를 위해 CA 기반의 무료 CA를 다운로드했으며, 두 머신 모두에서 문제없이 실행합니다.

스크린 세이버에서 CA를 사용하거나 일반적으로 CA를 사용하는 것과 관련하여 정보가 상당히 희박하며 프로필 작성/문제 해결 스크린 세이버에 대한 조언/자습서가 존재하지 않는 것 같습니다. 따라서 공동체가 제공 할 수있는 모든 도움은 환영받을 것입니다! 암시 적 애니메이션이 조금 부드러운 것을 도와 것처럼

--- UPDATE ---

보인다. 여전히 다소 엉망이지만, 내 솔루션과 같이 명시적인 애니메이션으로 모든 것을 애니메이션으로 만들려고 노력하는 것만 큼 나쁘지는 않습니다.

답변

1

은 화면 보호기에 대해 많은 특별 없습니다. Core Animation Programming Guide으로 시작했다고 가정합니다. Instruments를 통해이를 실행하면 너무 많은 시간을 차지하는 위치에 대한 많은 정보를 얻을 수 있습니다.

페이드 인을 사용하는 코드가 유용 할 것입니다. 당신이 묘사하는 것을 위해, 당신은 CABasicAnimation이 필요조차하지 않습니다; 레이어의 애니메이션 가능한 속성을 설정할 수 있으며 기본적으로 애니메이션을 적용 할 수 있습니다. Implicit Animations에서 읽었는지 확인하십시오. 그 페이지의 나머지 부분은 아마 사용 중일 것입니다.

CoreAnimation에서의 대부분의 작업이 방해 받고 있습니다. 나는 일반적으로 그것이하고있는 일을 알고 있으며, 대부분의 문제는 그것을 너무 많이 말하려고 노력할 때 두 번째로 추측된다.

관련 문제