在移至登录屏幕之前,在欢迎屏幕中显示视频

时间:2014-03-11 07:31:18

标签: ios cocoa ios5

在我的应用程序中,我想在第一个屏幕上显示一部电影(第一次用户打开一个应用程序),当电影完成运行时,应该显示登录屏幕。

我有两个问题:

  1. 我尝试这样做的方法是在单独的控制器上显示视频,当电影结束时,执行segue到登录控制器。这是正确的方法吗?

  2. 我收到performSegueWithIdentifier时正在MPMoviePlayerPlaybackDidFinishNotification。问题是没有任何反应。视频保留在屏幕上,控制器未更改。我在控制台中没有看到任何错误。从NSNotificationCenter通知执行segue是否有问题?

2 个答案:

答案 0 :(得分:1)

执行此操作的可能方法是反转viewController层次结构。

  • 从loginViewController开始,并有一个标志 确定它是否是第一次登录。如果是这样的话,那么 有一个介绍的introVideoViewController loginViewController,以loginViewController作为委托。
  • 放置代码以启动和展示您的introVideoViewController 在loginViewController的viewDidLoad中,所以看起来应用程序 已直接在introVideoViewController
  • 中启动
  • 使用MPMoviePlayerPlaybackDidFinishNotification,执行以下操作:[self.delegate introVideoDidFinishPlaying];。这会将控制权转移回loginViewController,然后可以关闭presentViewController。

我不熟悉如何使用故事板,但这种方法肯定适用于笔尖。

答案 1 :(得分:1)

正如我评论的那样,在你的loginViewController的.h文件中......

#import <UIKit/UIKit.h>
#import "cocos2d.h"
#import "cocos2d.h"

@interface VPViewController : UIViewController<CCDirectorDelegate>

@property (nonatomic, strong) IBOutlet CCGLView *glView;

在你的.m loginViewController ...

@synthesize glView=glView_;

使用viewDidLoad方法

CGRect glViewFrame = self.glView.frame;
CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == IPHONE_5_SCREEN_SIZE) {
    glViewFrame.size.height = 578;
}else{
    glViewFrame.size.height = 490;
}
[self.glView setFrame:glViewFrame];

CCDirector *director = [CCDirector sharedDirector];
[director setDisplayStats:NO];
[director setView:glView_];

// Enables High Res mode (Retina Display) on iPhone 4 and maintains low res on all other devices
if( ! [director enableRetinaDisplay:YES] )
    CCLOG(@"Retina Display Not supported");

// turn on multiple touches
[glView_ setMultipleTouchEnabled:YES];

CCScene *scene = [CCScene node];
glClearColor(0,0,0,0);

[scene setRotation:90.0f];

if([director enableRetinaDisplay:YES] && [self returnMaxTextureSize] == 2048){

    // this is a device with 2.0 scale factor and a max texture size of 2048 pixels
    NSLog(@"2048 only");
    [scene setScale:2.0f];

}else{

    [scene setScale:1.5f];

}

CCSprite * bg = [CCSprite spriteWithFile:@"login_background_white.png"];
[bg setRotation:-90.0f];
[bg setScale:0.8f];
[bg setPosition:ccp(155, 270)];
[scene addChild:bg z:-1];

[scene addChild: [VPAnimation node]];

[director pushScene:scene];
[director startAnimation];

最后,在你的xib ......

enter image description here