首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在场景过渡之前预滚转一个带有AVPlayer的SKVideoNode?

在场景过渡之前预滚转一个带有AVPlayer的SKVideoNode?
EN

Stack Overflow用户
提问于 2014-03-26 02:32:15
回答 1查看 535关注 0票数 2

我使用的是场景中附加了SKVideoNodeAVPlayer。这是该SKScene的唯一节点。我正在播放与一组其他场景混合在一起的视频,这些场景加载了各种SKSpriteNode节点。

我想要预滚AVPlayer,以便视频在SKScene过渡期间变得可见之前(或当它变为可见时)开始播放。然而,我似乎不能这样做,而不是得到一个介入的黑色闪光灯。

就像包含视频的场景消失一样,我重置了它(我将AVPlayer对象放入SKVideoNode的用户字典中)。

代码语言:javascript
复制
SKVideoNode *v = ...;
AVPlayer *player = [[v userData] objectForKey:@"AVPlayer"];
if ([player isKindOfClass:[AVPlayer class]]) {
    [player seekToTime:kCMTimeZero];

当包含视频的场景即将出现时,我这样做:

代码语言:javascript
复制
SKTransition *trans = [SKTransition flipHorizontalWithDuration:1.0];
[self.skView presentScene:theScene transition:trans];
[self performSelector:@selector(startVideoInScene:)
           withObject:theScene
           afterDelay:0.2];

然后..。

代码语言:javascript
复制
- (BOOL)startVideoInScene:(SKScene *)theScene
{
    for (SKNode *n in [theScene children])
        if ([n isKindOfClass:[SKVideoNode class]]) {
            SKVideoNode *v = (SKVideoNode *)n;
            AVPlayer *player = [[v userData] objectForKey:@"AVPlayer"];
            if ([player isKindOfClass:[AVPlayer class]]) {
                [v play];
                return YES;
            }
        }
    return NO;
}

如果在视频之前没有开始短持续时间的黑色,这将不起作用。

有没有人用这个成功了?

我有一种挥之不去的怀疑,那就是SKScene上的所有内容在转换过程中都会被挂起,没有办法绕过它。嗯,除了移出当前场景的所有节点,保留当前场景,并在其上过渡新的SKVideoNode

EN

回答 1

Stack Overflow用户

发布于 2014-06-09 09:42:46

this question的回答建议从视频的第一帧制作一张静止图像,并将其作为场景过渡时第一次出现的图像的SKSpriteNode。然后,当过渡结束时,隐藏该海报图像( SKSpriteNode)并播放视频。

现在,我正在做的一个项目中,我正在做的,实际上是利用黑色对我有利。游戏的上下文允许我这样做,但我基本上让我的场景过渡到黑色,视频的开始(在我的例子中是一个mp4)有它的黑色开始,然后随着视频播放从黑色淡入。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22643358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档