iPhone SDK:如何使用代码停止视频播放?

时间:2009-10-25 19:28:02

标签: iphone video

在我的应用中,我使用这个简单的代码播放视频:

NSBundle *bundle = [NSBundle mainBundle];
NSString *moviePath = [bundle pathForResource:@"video" ofType:@"mp4"];
NSURL *movieURL = [[NSURL fileURLWithPath:moviePath] retain];
MPMoviePlayerController *theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
theMovie.movieControlMode = MPMovieControlModeHidden;
[theMovie play];

我想知道如何使用代码停止视频,我已经尝试[theMovie stop];但是这不起作用,并且给出了错误,'theMovie'未声明(首次在此函数中使用)哪个是可以理解的,因为“theMovie”只在播放它的方法中声明。有没有人有任何想法如何阻止它不必显示内置的电影播放器​​控件?任何帮助赞赏。

1 个答案:

答案 0 :(得分:1)

如果您使用该代码在某种方法中创建该视频并在其他方法中调用stop,则会显示错误,因为theMovie仅存在于前一种方法中。您需要设置ivar@property

查看this question

编辑:

示例代码(未经测试):

@interface Foo : UIViewController {
    MPMoviePlayerController *_theMovie;
}

@property (nonatomic, retain) MPMoviePlayerController *theMovie;
- (void) creationMethod;
- (void) playMethod;
- (void) stopMethod;
@end



@implementation Foo

@synthesize theMovie = _theMovie;

- (void) creationMethod {
    NSString *moviePath = [[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"];
    NSURL *movieURL = [NSURL fileURLWithPath:moviePath]; // retain not necessary
    self.theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
    self.theMovie.movieControlMode = MPMovieControlModeHidden;
}

- (void) playMethod {
    [self.theMovie play];
}

- (void) stopMethod {
    [self.theMovie stop];
}

- (void) dealloc {
    [_theMovie release];
}

@end

您可以在某处调用creationMethod来制作您的电影播放器​​。这只是一个如何将玩家放置在一个属性中的示例,以便您可以在多种方法中使用它,但不一定是最佳实践。您可以/应该查看iPhone documentation on declared properties

我必须注意,我没有使用MPMoviePlayerController类,所以确切的代码可能会有所不同。