StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY
ハンドラーでは、StageVideo が利用可能であるかどうかに基づいて、Video と StageVideo のどちらのオブジェクトを使用するかを決定します。
StageVideoAvailabilityEvent.availability
プロパティが
StageVideoAvailability.AVAILABLE
に設定されている場合は、StageVideo を使用します。この場合、Stage.stageVideos の Vector に 1 つ以上の StageVideo オブジェクトが含まれていると見なすことができます。
Stage.stageVideos
プロパティから StageVideo オブジェクトを取得し、それに NetStream オブジェクトを割り当てます。StageVideo オブジェクトは常に後ろの面に表示されるので、常に前の面に表示される既存の Video オブジェクトがある場合にはそれらを削除します。また、このイベントハンドラーを使用して、
StageVideoEvent.RENDER_STATE
イベントのリスナーを追加することもできます。
StageVideoAvailabilityEvent.availability
プロパティが
StageVideoAvailability.UNAVAILABLE
に設定されている場合は、StageVideo の使用や
Stage.stageVideos
ベクターへのアクセスは避けてください。この場合は、Video オブジェクトに NetStream オブジェクトを割り当ててください。最後に、ステージに 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] のベクターエレメントにアクセスすると、デフォルトの rect が「0,0,0,0」に設定され、pan プロパティと zoom プロパティにデフォルト値が使用されます。これらの値を必要な値に再設定するようにしてください。
StageVideoEvent.RENDER_STATE
イベントターゲットまたは
VideoEvent.RENDER_STATE
イベントターゲットの
videoWidth
プロパティと
videoHeight
プロパティを使用して、ビデオビューポートのサイズを計算できます。
このサンプルアプリケーションのソースコード全体は、「
Getting Started with Stage Video
」からダウンロードしてください。