在第二次重新创建MPMoviePlayerController时,无法为其设置initialPlaybackTime

时间:2010-06-04 05:28:47

标签: ios objective-c mpmovieplayercontroller playback

当第一次创建MPMoviePlayerController(例如,theMovie)时,可以成功设置其initialPlaybackTime。但是当theMoive发布并重新创建一个新的MPMoviePlayerController时,其intialPlaybackTime无法正确设置,实际上电影总是从一开始就播放。代码如下。

-(void)initAndPlayMovie:(NSURL *)movieURL
{

    MPMoviePlayerController *theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];

    // create a notification for moviePlaybackFinish
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayBackDidFinish:) name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie];

    theMovie.initialPlaybackTime = 15;
    [theMovie setScalingMode:MPMovieScalingModeAspectFill];
    [theMovie play];}
-(void) moviePlayBackDidFinish:(NSNotification*)notification
{
    MPMoviePlayerController * theMovie = [notification object];
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:theMovie];
    [theMovie release];
    [self initAndPlayMovie:[self getMovieURL]];
}

使用上面的代码,当viewcontroller加载并运行initAndPlayMovie时,电影从15秒开始播放,但是当它播放完毕或按下“Done”时,会创建一个新的theMovie并从0秒开始播放。有人知道MPMoviePlayerController的initialPlaybackTime属性发生了什么吗?

每当你重新加载上面代码所在的viewController(来自父视图控制器的presentModalViewController)时,电影可以从任何播放时间开始。我真的很困惑,在viewcontroller加载和释放后重新创建它之间的MPMoviePlayerController注册方法的区别是什么。

2 个答案:

答案 0 :(得分:1)

问题已经解决了! 它需要一步才能正确进行initialPlaybackTime设置。

发布电影播放器​​后,再次开始播放前需要1秒延迟。确保完全释放电影播放器​​。

我花了3天时间才弄明白这个问题。但现在我的问题是如何检测电影播放器​​是否完全释放而不是等待一秒钟。

答案 1 :(得分:1)

释放theMovie后,给它一个值为零

[theMovie released]; theMovie = nil;

然后你可以判断它是否已经发布。

if (theMovie == nil){
//do something here when movie player is released already
}