2009-10-25 4 views
0

Dans mon application, je joue une vidéo en utilisant ce code simple:iPhone SDK: Comment arrêter la lecture vidéo avec du code?

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]; 

Je voudrais savoir comment arrêter la vidéo avec le code, j'ai essayé [theMovie stop]; mais cela ne fonctionne pas, et une erreur est donné, 'theMovie' non déclaré (première utilisation dans cette fonction) Ce qui est compréhensible car le "theMovie" est seulement déclaré dans la méthode qui le joue. Quelqu'un at-il des idées sur la façon de l'arrêter sans avoir à montrer les commandes intégrées du lecteur de film? Toute aide appréciée.

Répondre

1

Si vous créez cette vidéo dans une méthode avec ce code et que vous appelez stop dans une autre méthode, l'erreur apparaît car theMovie n'existe que dans la première méthode. Vous devez configurer un ivar ou un @property.

Découvrez this question.

EDIT:

Un exemple de code (non testé):

@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 

Vous appelleraient quelque part creationMethod pour créer votre lecteur vidéo. Ceci est juste un exemple de la façon dont un joueur pourrait être placé dans une propriété afin que vous puissiez l'utiliser à travers de nombreuses méthodes, mais pas nécessairement une pratique exemplaire. Vous pouvez/devriez jeter un oeil à la iPhone documentation on declared properties.

Je dois noter que je n'ai pas utilisé la classe MPMoviePlayerController, par conséquent, le code exact pourrait être différent.

+0

Oui, je comprends pourquoi l'appel d'une autre méthode ne fonctionnera pas dans ce cas, mais pourriez-vous m'expliquer davantage sur ce que je devrais faire? Je ne comprends pas vraiment ce que vous voulez dire encore avec ivar ou @property. Peut-être un exemple? : D Oh et moi avons vérifié la question, et je ne pouvais pas le relier à mon scénario. Merci quand même. – Sam

+0

édité avec un exemple – mga

+0

Merci, le code fonctionne parfaitement et je le comprends aussi. :) – Sam

Questions connexes