2012-06-14 9 views

답변

0

iOS/Objective-C에는 여러 가지 방법이 있습니다. 오디오가 재생되었다는 것을 보장하는 실제 오디오 플레이어의 콜백을 원하지 않는다고 가정합니다. 오디오를 재생할 때 사용하는 메커니즘 에 오디오가 실제로 재생되기 시작했을 때 콜백이 있습니다 (더 잘 동기화 할 수 있도록). 당신이 사용하는 경우,

또는 새로운 신기한 그랜드 센트럴 디스패치 버전

double delayInSeconds = 3.2; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    NSLog(@"later"); 
}); 

매우 일반적인 일이

[self performSelector:@selector(myMethod:) withObject:someArgumentOrNil afterDelay:3.2]; 

또는 당신이 그것을 사용하는 방법을 볼 수 NSTimer를 조회 할 수 있습니다 최신 OS 및 멀티 코어 장치, GCD는 좋은 방법입니다.

애니메이션 패키지 (예 : cocos2d)를 사용하는 경우에는 종종 타이밍 후크가 있습니다. 확장 된 질문에 대한


추가 : 모든 애니메이션이 다른 경우

, 그 다음은 당신이해야 할 일의 양입니다. 만약 그들이 모두 같거나 같으면 NSTimer가 .1 (예를 들어) 초마다 전화를 걸고 실제 경과 시간을 테스트 할 수 있습니다. 다음 임계 값을 치면 조치가 시작됩니다 . (상황은 시간에 실행되도록 보장 할 수 없습니다 - 앱이 늦게 실행 할 수있는 CPU 돼지 인 경우.) 더 복잡 것 경우

if (currentTime >= thresholdTime) { 
    [self doAnim]; 
    thresholdTime = nextOneInLine; 
} 

예, 당신은 가능성이 몇 가지 클래스를 구축하려는 처리해. 배열을 시간 순서대로 작성하고 큐처럼 취급하십시오.

+0

실제로 콜백이 더 필요하기 때문에 제 질문이 커졌습니다. 솔루션이 확장 될 것이라고 생각하십니까? 나는 항상 오디오의 시작과 다른 타이머 사이에 지연이 없다고 가정하고 있다고 생각하십니까? –

+0

수정 된 답변 – bshirley

관련 문제