开发者

How to change view after video played?

I would like to make an application in which, when I press a button, one video starts playing, and when it finishes or when I press "done" button it should take me to a view different from the first one where I launched the video.

Update:

开发者_JAVA百科This is the code I'm using but it doesn't work. I need to use MPMoviePlayerViewController instead of MPMoviePlayerController. Any idea?

NSBundle *Bundle = [NSBundle mainBundle];
    NSString *moviePath = [Bundle pathForResource:@"video1" ofType:@"m4v"];
    NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain];
    MPMoviePlayerViewController *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];
    [self presentMoviePlayerViewControllerAnimated:moviePlayer];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayer];


- (void) movieFinishedCallback:(NSNotification*) notification {
    MPMoviePlayerViewController *moviePlayer = [notification object];
    [[NSNotificationCenter defaultCenter] 
     removeObserver:self
     name:MPMoviePlayerPlaybackDidFinishNotification
     object:moviePlayer];    
    [moviePlayer release];
    // dismiss your view or present a new view here.
    View1 *View1b = [[View1 alloc] initWithNibName:nil bundle:nil];
    View1b.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    [self presentModalViewController: View1b animated:YES];
}


Unless you need something very custom, MPMoviePlayerController will probably suit your needs. You can add it to your view or a smaller subview, and you can disable the controls for fullscreen, etc. The url can be to a local file or remove resource.

MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL: url];
[player view].frame = [myView bounds];
[myView addSubview: [player view]];
[player play];

Observe the MPMoviePlayerPlaybackDidFinishNotification to figure out when it is done, and from that observer's block or selected method you can dismiss your view or present a new view.

[[NSNotificationCenter defaultCenter] 
        addObserver:self
           selector:@selector(movieFinishedCallback:)                                                 
               name:MPMoviePlayerPlaybackDidFinishNotification
             object:player];

Then

- (void) movieFinishedCallback:(NSNotification*) notification {
    MPMoviePlayerController *player = [notification object];
    [[NSNotificationCenter defaultCenter] 
        removeObserver:self
                  name:MPMoviePlayerPlaybackDidFinishNotification
                object:player];    
    [player release];

    // dismiss your view or present a new view here.
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜