2010-12-28 2 views
1

나는 애니메이션을 연속적으로 상하로 움직이는 간단한 객체 (AnimateTopDown)를 가지고있다. 그리고 나는 애니메이트하는 몇몇 AnimateTopDown 객체를 가지고 있지만, 모든 객체 애니메이션 사이에는 동기화가 없다. 일반적으로 객체 간의 동기화를 유지하는 방법은 무엇입니까? 별도의 애니메이션 블록간에 동기화 할 수있는 방법이 있습니까?오브젝트 애니메이트 간 동기화 유지?

p.s. 애니메이션 객체에 UIViewAnimation 인터페이스를 사용하고 있습니다.

답변

0

// mSyncTime가 공유 할 수/전역 변수

-(NSTimeInterval) getStartDelay 
{ 
    NSTimeInterval delay; 

    NSTimeInterval oldTime = mSyncTime; 
    if(oldTime == 0) 
    { 
     mSyncTime = [NSDate timeIntervalSinceReferenceDate]; 
     oldTime = mSyncTime; 
    } 

    NSTimeInterval timeNow = [NSDate timeIntervalSinceReferenceDate]; 

    delay = timeNow - oldTime; 

    SLint delayInMiliSec = delay * 1000; 
    SLint animDuration = (DEFAULT_ANIM_SPPED*2) * 1000; 

    SLint timeElapsed = delayInMiliSec%animDuration; 
    delay = animDuration - timeElapsed; 

    delay = delay/1000.0; 

    if(oldTime == 0) 
     delay = 0; 

    return delay; 
} 

그리고 나는 setAnimationDelay API에 지연을 설정 한 애니메이션 ... 그것은 나를 위해 일한

[UIView setAnimationDelay:[self getStartDelay]]; 

를 시작하기 전에 ... 해킹은 표준 시간을 유지해야하며 애니메이션을 시작하기 전에 애니메이션을 기준 시간과 동기화해야합니다.

0

여기에서 원하는 것을 얻는 것은 다소 어렵습니다. 어떤 종류의 효과를 얻고 있으며 어떤 효과를 얻고 싶습니까?

일반적으로 단일 UIView 애니메이션 블록 (또는 애니메이션을 적용하는 데 사용하는 메커니즘)을 사용하여 모든 개체를 동시에 이동하도록 이동할 수 있습니다. 별도의 애니메이션 블록을 제공하면 CPU 시간에 비해 queue'd가 올라갈 때마다 한 번에 하나씩 실행된다는 것을 의미합니다.

관련 문제