0

CCVideoPlayer を使用してゲームでビデオを再生していますが、再生前に黒い画面が表示される原因となるわずかな遅延があります。ビデオをプリロードするか、この遅延をなくす方法で CCVideoPlayer をセットアップする方法はありますか? これが私がそれをどのように使用しているかです。起動時にロードシーンがあり、すべてのリソースがロードされたら、次のようにメインメニューに切り替えるように指示します:

[[CCDirector sharedDirector] replaceScene:[MainMenu scene]];

そして、これは私がメインメニューで映画を再生する方法です:

+(CCScene *) scene
{
    CCScene *scene = [CCScene node];
    MainMenu *layer = [MainMenu node];
    [scene addChild: layer];

    return scene;
}

- (id) init {

    if( (self=[super init])) {

                [CCVideoPlayer setDelegate: self];

    }

    return self;
}

- (void)onEnter{

        [self playVideo];
    }

    [super onEnter];
}

-(void)onExit{

    [super onExit];
}

- (void) playVideo {

    [CCVideoPlayer playMovieWithFile: @"MenuBuild.m4v"];
}

- (void) movieStartsPlaying {

    [[CCDirector sharedDirector] stopAnimation];

}

- (void) moviePlaybackFinished
{

    [[CCDirector sharedDirector] startAnimation];

 }

#ifdef __IPHONE_OS_VERSION_MAX_ALLOWED
// Updates orientation of CCVideoPlayer. Called from SharedSources/RootViewController.m
- (void) updateOrientationWithOrientation: (UIDeviceOrientation) newOrientation
{
    [CCVideoPlayer updateOrientationWithOrientation:newOrientation ];
}
#endif

- (void) dealloc {

    [CCVideoPlayer setDelegate: nil];

    [super dealloc];
}
@end

黒い画面でわずかな遅延が発生するのではなく、すぐにビデオの再生を開始するためにできる別のことはありますか?

4

1 に答える 1

0

黒いちらつきを隠すためにできることは、ビデオの上に最初のフレームの画像を表示することです。0.5 秒後 (または黒いちらつきが続く時間) に最初のフレームを非表示にして、ビデオが表示されるようにします。次に例を示します。

CCSprite* first_frame = [CCSprite spriteWithFile:@"first_frame.png"];
[self addChild:first_frame];

id delay_action = [CCDelayTime actionWithDuration:0.5f];

id call_action = [CCCallBlock actionWithBlock:^
{
    first_frame.visible = FALSE;
}];

[first_frame runAction:[CCSequence actions:delay_action, call_action, nil]];

私は使用していませんCCVideoPlayerが、ビデオの上にスプライトを配置できない場合は、ビデオのアルファを最初に 0 に設定してから、呼び出しブロックでそれを可視に設定して、ビデオの再生が見られるようにしてください。最初の 0.5 秒の遅延の後 (または必要な時間)。これにより、黒いちらつきが過ぎた後にビデオが表示されます。

可視性を切り替える方法を追加する必要がある場合は、ビデオ プレーヤーを変更することを恐れないでください。

私のアプリでは、MPMoviePlayerViewControllerオフを非表示として開始し、少し遅れて表示に設定して、ちらつきを非表示にします。ビデオを使用する私の cocos2d アプリでは、使用するムービー プレーヤーを追加する[[[CCDirector sharedDirector] view] addSubview:...];ので、個人的には使用しませんが、CCVideoPlayerそれでも機能するはずです。

githubを見た後、ムービー ビューを非表示に設定し、上記のコード ブロックの例では、遅延時間後に表示にCCVideoPlayer設定できるはずです。playMovieAtURLこれが役立つことを願っています。

于 2013-07-26T19:13:51.613 に答える