L'émulation splash vidéo dans une application iOS

OK, il y a très peu d'options pour émuler le démarrage de la vidéo dans iOS. Tout ce que nous pouvons faire est d'attendre jusqu'à l'application est entièrement chargé et ensuite créer Media Player et de la charge de la vidéo en elle.

J'ai mis en place avec code suivant:

-(void) moviePlayBackDidFinish:(NSNotification*)notification
{
    NSLog(@"Intro video stopped");
    [mMoviePlayer release];
}

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    NSURL* mMovieURL;
    NSBundle *bundle = [NSBundle mainBundle];
    if(bundle != nil)
    {
        NSString *moviePath = [bundle pathForResource:@"intro" ofType:@"mp4"];
        if (moviePath)
        {
            mMovieURL = [NSURL fileURLWithPath:moviePath];
            [mMovieURL retain];
        }
    }

    mMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:mMovieURL];
    [mMovieURL release];

    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(moviePlayBackDidFinish:) 
                                                 name:MPMoviePlayerPlaybackDidFinishNotification 
                                               object:mMoviePlayer];

    mMoviePlayer.controlStyle = MPMovieControlStyleNone;
    [mMoviePlayer.backgroundView addSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Splash/background.png"]] autorelease]];
    mMoviePlayer.scalingMode = MPMovieScalingModeFill;

    [window addSubview:mMoviePlayer.view];
    [mMoviePlayer setFullscreen:YES animated:NO];

    [window makeKeyAndVisible];
    [mMoviePlayer play];

<... other stuff ...>

}

Ma vidéo n'est que de 1 MO. Mais ce code faire quelque chose de différent alors j'aimerais voir:

  1. Tout d'abord l'utilisateur peut voir la statique de l'écran de démarrage pendant quelques secondes;
  2. Puis un écran noir s'affiche pendant 1 ou 2 secondes. Je pense que ce qui se passe parce que le lecteur multimédia est chargé.
  3. Vidéo de commencer à jouer.
  4. De l'interface principale de charges.

Comme vous le comprenez, je n'aime pas la pause avec un écran noir - il semble laid.

Aussi loin que je peux voir dans mon journal de la Console le problème est que le lecteur multimédia est en attente jusqu'à l'affichage principal contrôleur est entièrement chargé.

Quelques mots à propos de la vue principale: je suis en train d'écrire une application pour iPad et l'écran principal se compose de plusieurs sous-vues avec plusieurs images. Chaque image et chaque sous-vue dans la vue principale en charge les données à partir d'Internet service Web via ASIHTTPRequest lib.

Je pense que le Lecteur Multimédia est en attente pour toutes les connexions initiales pour terminer, et seulement alors, on commence par la vidéo...

Comment puis-je la force de la vidéo à jouer avant la vue principale est chargé? Ou peut-être que je peut retarder le chargement de la principale XIB?

OriginalL'auteur WASD42 | 2011-08-13