在我的应用中,我使用这个简单的代码播放视频:
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”只在播放它的方法中声明。有没有人有任何想法如何阻止它不必显示内置的电影播放器控件?任何帮助赞赏。
答案 0 :(得分:1)
如果您使用该代码在某种方法中创建该视频并在其他方法中调用stop
,则会显示错误,因为theMovie
仅存在于前一种方法中。您需要设置ivar
或@property
。
编辑:
示例代码(未经测试):
@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
类,所以确切的代码可能会有所不同。