iphone – 在iOS应用程序中模拟splash视频

好的,在iOS中,几乎没有什么可以模仿泼溅视频的选项.我们可以做的只是等待应用程序完全加载,然后创建媒体播放器并加载视频.

我用下面的代码实现了它:

-(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 ...>

}

我的视频只有1 MB.但是这个代码做了一些不同的事情,我想看看:

>首先用户可以看到静态闪屏几秒钟;
>然后黑屏出现1或2秒.我认为这是因为媒体播放器被加载.
>视频开始播放.
>主界面加载

据了解,我不喜欢黑屏的暂停 – 它看起来很丑陋.

据我在控制台日志中可以看到的问题是,mediaplayer正在等待主视图控制器完全加载.

关于主视图的很少话:我正在为iPad编写应用程序,主视图包含多个图像的多个子视图.主视图中的每个图像和每个子视图通过ASIHTTPRequest库从Internet Web服务加载一些数据.

我认为媒体播放器正在等待所有初始连接完成,只有这样才能启动视频…

在加载主视图之前,如何强制视频播放?或者也许我可以延迟加载主XIB?

解决方法

你不能摆脱静态闪光图像.虽然显示,操作系统正在加载应用程序和实例化的东西,直到它准备好调用您的UIApplicationDelegate.所以你可以做的就是使用没有飞溅(黑屏几秒钟),或让你的电影与所显示的启动画面完全一致,所以看起来静态图像会突然动画化.

要在电影加载时摆脱黑色屏幕,您可以尝试使用make the player transparent,并在播放器后面显示闪光图像中的UIImageView.行为是这样的:

>显示飞溅屏幕(静态图像).
>应用程序加载.你看到UIImageView,也显示了闪屏.最重要的是透明电影播放器​​.
>电影播放器​​终于加载了并开始播放它.

至少在理论上,这应该导致静态图像突然开始动画的效果.

但是如果你根本不使用闪屏(很多游戏),那么电影播放器​​首先显示黑屏并不重要,你不会注意到.

关于在UIImageView中显示启动屏幕:不幸的是,you have to test the interface rotation and load the image manually,没有办法查询显示哪个启动屏幕.如果您只支持一个界面方向(再次,很多游戏都这样做),当然没有这个问题.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...