在
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] 的 Vector 元素,預設矩形設定為 0,0,0,0, 且平移與縮放屬性均使用預設值。請一律將這些值重設為您偏好的設定。您可使用
StageVideoEvent.RENDER_STATE
或
VideoEvent.RENDER_STATE
事件目標的
videoWidth
與
videoHeight
屬性來計算視訊檢視區域大小。
請在
開始使用舞台視訊
,下載此範本應用程式的完整原始碼。