·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[as3]使用 StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILI

时间:2015-04-09 09:53酷播
在 StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY 处理函数中,根据 StageVideo 的可用性确定是使用 Video 对象还是使用 StageVideo 对象

StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY 处理函数中,根据 StageVideo 的可用性确定是使用 Video 对象还是使用 StageVideo 对象。如果 StageVideoAvailabilityEvent.availability 属性设置为 StageVid oAvailability.AVAILABLE,则使用 StageVideo。在这种情况下,可依赖于 Stage.stageVideos 矢量来包含一个或多个 StageVideo 对象。从 Stage.stageVideos 属性获取 StageVideo 对象,并将 NetStream 对象附加到它。由于 StageVideo 对象始终显示在背景中,因此需删除所有现有的 Video 对象(始终位于前景中)。还可以使用此事件处理函数添加 StageVideoEvent.RENDER_STATE 事件的侦听器。

如果 StageVideoAvailabilityEvent.availability 属性设置为 StageVid oAvailability.UNAVAILABLE,请勿使用 StageVideo 或访问 Stage.stageVideos 矢量。在这种情况下,请将 NetStream 对象附加到 Video 对象。最后,请将 StageVideo 或 Video 对象添加到舞台,并调用 NetStream.play()

下面的代码显示如何处理 StageVideoAvailabilityEvent.STAGE_VIDEO_AVAILABILITY 事件:

  1. private var sv:StageVideo;  
  2. private var video:Video;  
  3.   
  4. private function onStageVideoState(event:StageVideoAvailabilityEvent):void  
  5. {      
  6.     // Detect if StageVideo is available and decide what to do in toggleStageVideo  
  7.     toggleStageVideo(event.availability == StageVideoAvailability.AVAILABLE);  
  8. }  
  9.   
  10. private function toggleStageVideo(on:Boolean):void  
  11. {      
  12.     // To choose StageVideo attach the NetStream to StageVideo  
  13.     if (on)  
  14.     {  
  15.         stageVideoInUse = true;  
  16.         if ( sv == null )  
  17.         {  
  18.             sv = stage.stageVideos[0];  
  19.             sv.addEventListener(StageVideoEvent.RENDER_STATE, stageVideoStateChange);  
  20.                 sv.attachNetStream(ns);  
  21.         }  
  22.   
  23.         if (classicVideoInUse)  
  24.         {  
  25.             // If you use StageVideo, remove from the display list the  
  26.             // Video object to avoid covering the StageVideo object  
  27.             // (which is always in the background)  
  28.             stage.removeChild ( video );  
  29.             classicVideoInUse = false;  
  30.         }  
  31.     } else  
  32.     {  
  33.         // Otherwise attach it to a Video object  
  34.         if (stageVideoInUse)  
  35.             stageVideoInUse = false;  
  36.         classicVideoInUse = true;  
  37.         video.attachNetStream(ns);  
  38.         stage.addChildAt(video, 0);  
  39.     }  
  40.       
  41.     if ( !played )  
  42.     {  
  43.         played = true;  
  44.         ns.play(FILE_NAME);  
  45.     }  
  46. }  

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器