2014-03-25 8 views
2

AVPlayer에 이 붙어 있습니다. 그게 SKScene의 유일한 노드입니다. 그 비디오는 다양한 SKSpriteNode 노드로로드 된 일련의 다른 장면들과 섞여 있습니다.장면 전환 전에 SKVideoNode w/AVPlayer를 미리 롤링 하시겠습니까?

AVPlayer을 미리 롤링하여 비디오가 SKScene 전환 중에 표시되기 직전에 재생되도록합니다. 그리고 아직 까맣게 개입하지 않고는 그렇게 할 수 없습니다.

비디오가 포함 된 장면이 사라지면 AVPlayer 객체를 의 사용자 사전에 넣습니다.

- (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; 
} 

이 작동하지 않습니다 ... 다음

SKTransition *trans = [SKTransition flipHorizontalWithDuration:1.0]; 
[self.skView presentScene:theScene transition:trans]; 
[self performSelector:@selector(startVideoInScene:) 
      withObject:theScene 
      afterDelay:0.2]; 

:

SKVideoNode *v = ...; 
AVPlayer *player = [[v userData] objectForKey:@"AVPlayer"]; 
if ([player isKindOfClass:[AVPlayer class]]) { 
    [player seekToTime:kCMTimeZero]; 

장면이 그 비디오를 포함하고 표시하는 것입니다

, 나는이 수행이 작업 표시 짧은 시간 동안 검정색으로 시작하지 않고

누구나 이걸 성공 했나요?

SKScene의 모든 콘텐츠가 전환되는 동안 일시 중지되었으며 주위에는 경로가 없습니다. 음, 현재 장면의 모든 노드를 전환하고, 현재 장면을 유지하고 새로운 을 전환하는 것과 별개로

답변

1

this question의 대답은 비디오의 첫 번째 프레임에서 정지 이미지를 만들고 장면 전환으로 처음 나타나는 이미지로 사용할 SKSpriteNode을 제안합니다. 그런 다음 전환이 끝나면 해당 포스터 이미지 (SKSpriteNode)를 숨기고 비디오를 재생합니다.

이제 내가 지금하고있는 프로젝트에서 내가하고있는 일은 사실 흑인을 제 장점으로 사용하고 있습니다. 게임의 컨텍스트를 통해이 작업을 수행 할 수 있지만 기본적으로 장면이 검은 색으로 변하게합니다. 비디오의 시작 부분 (내 경우에는 mp4)이 검은 색으로 시작한 다음 비디오가 재생되면 검은 색으로 페이드 인합니다.