Sprite kit 在精灵套件中永远播放视频

Sprite kit 在精灵套件中永远播放视频,sprite-kit,skvideonode,Sprite Kit,Skvideonode,我在播放介绍场景中的视频时遇到问题。我已经将我的视频添加到场景中,播放效果很好。我只想让它一次又一次地重复。有没有办法将此视频设置为在结束后自动播放 以下是我添加视频的方式: SKVideoNode *videoNode = [SKVideoNode videoNodeWithVideoFileNamed:@"game1.m4v"]; videoNode.position = CGPointMake(150, 180); videoNode.size = CGSizeMake(150, 150)

我在播放介绍场景中的视频时遇到问题。我已经将我的视频添加到场景中,播放效果很好。我只想让它一次又一次地重复。有没有办法将此视频设置为在结束后自动播放

以下是我添加视频的方式:

SKVideoNode *videoNode = [SKVideoNode videoNodeWithVideoFileNamed:@"game1.m4v"];
videoNode.position = CGPointMake(150, 180);
videoNode.size = CGSizeMake(150, 150);
[self addChild:videoNode];
[videoNode play];

非常感谢您的帮助。

使用以下命令初始化您的SKVideoNode:

- (instancetype)initWithAVPlayer:(AVPlayer *)player
设置AVPlayer时,请使用:

avPlayer.actionAtItemEnd = AVPlayerActionAtItemEndNone; 

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(playerItemDidReachEnd:)
                                             name:AVPlayerItemDidPlayToEndTimeNotification
                                           object:[avPlayer currentItem]];
这将防止播放器在结束时暂停

在通知中:

-(void)playerItemDidReachEnd:(NSNotification *)notification {
    AVPlayerItem *p = [notification object];
    [p seekToTime:kCMTimeZero];
}
这将倒带电影


(他的回答归功于)

如果您使用initWithAVPlayer初始化,您可以使用以下代码来循环视频:@sangony是否可以使用sk video node完成此操作?是的,如果您使用上述使用AVPlayer的init。然后可以使用链接的代码创建一条消息,该消息依次循环。或者,您也可以使用块计时并重新运行您的视频。@sangony,谢谢您的链接。它成功了。请您将其作为答案发布,以便我为您标记,再次感谢您。奇怪的是,如果您在初始化视频节点之前未设置actionAtItemEnd或手动播放AVPlayer,则播放完成后将收到2个通知,而不是1个通知。我猜一个用于倒带,一个用于播放完成,因为它在默认情况下会暂停,但是如果手动播放播放器,为什么会发生这种变化呢。还有人看到内存泄漏吗?当使用AVPlayer和SKVideoNode循环视频时,会出现这种情况。