OK, istnieje bardzo niewiele opcji emulacji powitania wideo w systemie iOS. Wszystko, co możemy zrobić, to poczekać, aż aplikacja zostanie w pełni załadowana, a następnie utworzyć Media Player i załadować wideo.Emulacja wideo powitalnego w aplikacji iOS
I wdrożone go z następującym kodem:
-(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 ...>
}
Mój film jest tylko 1 MB. Ale ten kod robi coś innego niż chciałbym zobaczyć:
- Przede wszystkim użytkownik może zobaczyć statyczny ekran powitalny przez kilka sekund;
- Następnie pojawia się czarny ekran przez 1 lub 2 sekundy. Myślę, że tak się dzieje, ponieważ odtwarzacz multimediów jest załadowany.
- Rozpocznij odtwarzanie wideo.
- Ładowanie głównego interfejsu.
Jak rozumiesz, nie podoba mi się przerwa z czarnym ekranem - wygląda brzydko.
O ile widzę w moim dzienniku konsoli, problem polega na tym, że mediaplayer czeka, aż główny kontroler widoku zostanie w pełni załadowany.
Kilka słów o głównym widoku: piszę aplikację na iPada, a główny widok składa się z kilku subviews z wieloma obrazami. Każdy obraz i każdy widok podrzędny w widoku głównym ładuje niektóre dane z internetowej usługi sieci Web za pośrednictwem biblioteki ASIHTTPRequest.
myślę, że Media Player czeka na wszystkie początkowe połączenia do końca i dopiero wtedy zaczyna się film ...
Jak mogę zmusić film grać przed głównym widoku jest ładowany? A może mogę opóźnić załadowanie głównego XIB?
Dziękuję, myślę, że to najlepszy sposób obejścia :) Chociaż nie mogę zrozumieć, dlaczego gracz czeka na wszystkie połączenia ... – WASD42