StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY
핸들러에서 StageVideo의 가용성에 따라 Video 또는 StageVideo 객체 중 어느 것을 사용할지 결정하십시오.
StageVideoAvailabilityEvent.availability
속성이
StageVideoAvailability.AVAILABLE
로 설정되어 있으면 StageVideo를 사용합니다. 이 경우에 Stage.stageVideos 벡터를 활용해 하나 이상의 StageVideo 객체를 포함할 수 있습니다.
Stage.stageVideos
속성에서 StageVideo 객체를 구하여 여기에 NetStream 객체를 연결합니다. StageVideo 객체는 항상 배경에 나타나므로 기존의 모든 Video 객체(항상 전경에 나타남)를 제거합니다. 또한 이 이벤트 핸들러를 활용하여
StageVideoEvent.RENDER_STATE
이벤트에 대한 리스너를 추가합니다.
StageVideoAvailabilityEvent.availability
속성이
StageVideoAvailability.UNAVAILABLE
로 설정되어 있으면 StageVideo를 사용하지 않거나
Stage.stageVideos
벡터에 액세스하지 않도록 합니다. 이 경우 NetStream 객체를 Video 객체에 연결합니다. 마지막으로 StageVideo 또는 Video 객체를 스테이지에 추가하고
NetStream.play()
를 호출합니다.
다음 코드에서는
StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY
이벤트를 처리하는 방법을 보여 줍니다.
private var sv:StageVideo;
private var video:Video;
private function onStageVideoState(event:StageVideoAvailabilityEvent):void
{
// Detect if StageVideo is available and decide what to do in toggleStageVideo
toggleStageVideo(event.availability == StageVideoAvailability.AVAILABLE);
}
private function toggleStageVideo(on:Boolean):void
{
// To choose StageVideo attach the NetStream to StageVideo
if (on)
{
stageVideoInUse = true;
if ( sv == null )
{
sv = stage.stageVideos[0];
sv.addEventListener(StageVideoEvent.RENDER_STATE, stageVideoStateChange);
sv.attachNetStream(ns);
}
if (classicVideoInUse)
{
// If you use StageVideo, remove from the display list the
// Video object to avoid covering the StageVideo object
// (which is always in the background)
stage.removeChild ( video );
classicVideoInUse = false;
}
} else
{
// Otherwise attach it to a Video object
if (stageVideoInUse)
stageVideoInUse = false;
classicVideoInUse = true;
video.attachNetStream(ns);
stage.addChildAt(video, 0);
}
if ( !played )
{
played = true;
ns.play(FILE_NAME);
}
}
중요:
응용 프로그램이 Stage.stageVideos[0]의 벡터 요소에 처음 액세스하면 기본 사각형이 0,0,0,0으로 설정되고 이동 및 확대/축소 속성이 기본값을 사용합니다. 항상 이 값을 기본 설정 값으로 재설정합니다. 비디오 뷰포트 크기를 계산하는 경우
StageVideoEvent.RENDER_STATE
또는
VideoEvent.RENDER_STATE
이벤트 대상의
videoWidth
및
videoHeight
속성을 사용할 수 있습니다.
이 샘플 응용 프로그램의 전체 소스 코드는
스테이지 비디오 시작
에서 다운로드할 수 있습니다.