2011-06-01 76 views
1

我有一個擁有UIImageView作爲子視圖的UIView。此圖像視圖旨在顯示動畫(基本上,使用startAnimating方法)。當動畫開始時,我還需要播放聲音。爲此,我使用AVAudioPlayer的prepareToPlay和播放方法。UIImageView/AVAudioPlayer同步

我遇到的問題是,第一次全球動畫(圖像動畫本身+聲音)啓動時,在圖像動畫實際開始之前系統地播放聲音。考慮到沒有任何同步,完全不奇怪。

但是如何實現這種同步呢?是否有某種回調可以用來了解何時播放圖像動畫,並從那裏啓動聲音播放...... 或者,也許耦合UIImageView和AVAudioPlayer不是一個好主意?

這是我目前的執行:

- (void)playSample { 
    previewView_ = [[[PreviewView alloc] initWithFrame:topView.bounds 
             backgroundImages:backgroundAnimationImages 
             characterImages:characterAnimationImages] autorelease]; 

    [previewView_ setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight]; 


    [topView addSubview:previewView_]; 

    [audioPlayer_ setDelegate:self]; 
    [audioPlayer_ setVolume:1.0]; 

    [previewView_ startPreview]; // This calls startAnimating on the UIImageView of previewView_ 
    [audioPlayer_ playSound]; 

}

回答

1

也許你可以使用:

[audioPlayer playAtTime:[audioPlayer deviceCurrentTime] + someDelayTimeInterval]

我找到了udioPlayer(或prepareToPlay)被搞亂了我的顯示更新,所以我落得這樣做是創造audioPlayer在viewDidLoad中每個音:在一個叫做在後臺線程方法播放:

[self performSelectorInBackground:@selector(playAudioPlayer:) 
withObject:self.audioPlayer]; 
+0

似乎沒有這樣做,但確實如此:'[audioPlayer_ performSelector:@selector(play)withObject:nil afterDelay:0.1];'無論如何;} – AgentCorleone 2011-06-15 06:10:12