2012-06-25 16 views
2

我試圖同步幾個CABasicAnimationsAVAudioPlayer。我的問題是CABasicAnimation使用CACurrentMediaTime()作爲調度動畫時的參考點,而AVAudioPlayer使用deviceCurrentTime。同樣對於動畫,使用CFTimeInterval,而對於聲音,它的NSTimeInterval(不確定它們是否像其他CF和NS類型一樣是「免費橋接」)。我發現參考點也是不同的。協調CACurrentMediaTime()和deviceCurrentTime

有沒有辦法確保聲音和動畫使用相同的參考點?

回答

1

我不知道「官方」的答案,但他們都是雙精度浮點數,從某個參考時間開始測量秒數。

從文檔,這聽起來像deviceCurrentTime被鏈接到當前音頻會話:

的時間值,以秒,音頻輸出設備。 (只讀)

@property(只讀)NSTimeInterval deviceCurrentTime討論當音頻播放器 正在播放或暫停時,此屬性的 值單調遞增。

如果超過一個音樂播放器連接到音頻輸出設備, 設備時一直持續遞增爲一體的 球員至少一個正在播放或暫停。

如果音頻輸出設備沒有連接的音頻播放器是 播放或暫停,設備時間將恢復爲0。

您應該能夠啓動一個音頻輸出會話,調用CACurrentMediaTime(),然後在2個順序語句中獲取音頻會話的deviceCurrentTime,然後計算偏移常量以在它們之間進行轉換。這個抵消在幾個納秒內是準確的。 偏移量僅在音頻輸出會話處於活動狀態時有效。每次從音頻會話中刪除所有音頻播放器時,您都必須重新計算它。

1

我認爲官方答案剛剛改變,雖然目前在NDA下。

請參閱「Camera Capture中的新功能」,特別是有關CMSync *功能的最新幻燈片。 https://developer.apple.com/videos/wwdc/2012/?id=520

+0

這涉及到爲iOS 5開發的項目,所以我將無法使用這些功能。 (我現在正在觀看視頻,以備將來參考。) –