flex学习笔记2

1 用flex做一个视频播放器
注意:如果VideoDisplay没有播放的内容时,调用stop会出现异常
Error: 1000: UNo bitrate match
先判断一下:if(flvideo.playing) flvideo.stop();
2 flex3中全屏模式
if(displayChk.selected)
                {
                    stage.displayState="fullScreen";
                }else{
                    stage.displayState="normal";
                }
类flash.display.StageDisplayState未找到,因此直接使用字符串赋值
在flex的模板文件index.template.html中的AC_FL_RunContent调用参数中增加
 'allowFullScreen','true',
在object中增加
xml 代码
 
  1. <param name="allowFullScreen" value="true" />  
embed下增加
allowfullscreen="true"

才能使用全屏模式

 

 

视频播放器源码,包括音量、全屏模式、网络flv播放、定位播放 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"  width="835" height="782" >  
  3. <mx:Script>  
  4.   <![CDATA[  
  5.      import mx.events.SliderEvent; // 这里是导入所需要的类, 用 import 关键字, 没什么好说的  
  6.      import mx.events.VideoEvent;  
  7.     import flash.events.KeyboardEvent;  
  8.     import mx.controls.Alert;     
  9.    import flash.display.Stage;  
  10.      private var soundPosition:Number;  
  11. // 自定义一个 playingMove() 函数, 作用: 影片播放时, id 为 " my_hs " 的HSlider 控件的值为影片的播放时间, 且最大值为影片的总时长  
  12.      private function playingMove(event:VideoEvent):void{  
  13.          my_hs.value = flvideo.playheadTime;  
  14.         my_hs.maximum=flvideo.totalTime;  
  15.    }  
  16. // 自定义 hs_onChange() 函数, 作用: 当用户拖拉 HSlider 控件使其值发生改变时,  影片的播放头就处于其值处, 即正在播放时间处于其值处  
  17.     private function hs_onchange(event:SliderEvent):void{  
  18.        flvideo.playheadTime = event.value;  
  19.    }  
  20. //停止  
  21.     private function stopMovie(event:MouseEvent):void{  
  22.         flvideo.stop();  
  23.     }  
  24. //播放  
  25.     private function playMovie(event:MouseEvent):void{  
  26.           
  27.         playUrl(urlText.text);  
  28.           
  29.     }  
  30. //暂停  
  31.     private function pauseMovie(event:MouseEvent):void{  
  32.         flvideo.pause();  
  33.     }  
  34. //下拉框  
  35.     private function onChangeUrl(event:KeyboardEvent):void{  
  36.         trace(event.keyCode);  
  37.         if(event.keyCode==13){  
  38.         playUrl(urlText.text);  
  39.           
  40.      }  
  41.     }    
  42.     private function playUrl(url:String):void  
  43.     {  
  44.         if(flvideo.playing)  
  45.          flvideo.stop();  
  46.           
  47.         flvideo.source = url;  
  48.         flvideo.play();  
  49.     }  
  50.    //声音音量控制                    
  51.             private function sound_thumbChanges(event:SliderEvent):void{  
  52.                 soundPosition = hs_sound.value;  
  53.             }  
  54.               
  55.            
  56.             private function sound_thumbRelease(event:SliderEvent):void{  
  57.                 flvideo.volume = soundPosition;  
  58.             }  
  59. //格式化时间  
  60.             private function formatTimes(value:int):String{  
  61.                 var result:String = (value % 60).toString();  
  62.                   
  63.                 if (result.length == 1){  
  64.                     result = Math.floor(value / 60).toString() + ":0" + result;  
  65.                 } else {  
  66.                     result = Math.floor(value / 60).toString() + ":" + result;  
  67.                 }  
  68.                 return result;  
  69.             }  
  70.             private function displayStateChange():void  
  71.             {  
  72.                 if(displayChk.selected)  
  73.                 {  
  74.                     stage.displayState="fullScreen";  
  75.                 }else{  
  76.                     stage.displayState="normal";  
  77.                 }  
  78.             }  
  79.               
  80.   ]]>  
  81. </mx:Script>  
  82. <mx:XML id="xmlData" source="FlvData.xml" format="xml" />  
  83. <mx:VideoDisplay id="flvideo" playheadUpdate="playingMove(event)"  x="10" y="10" autoPlay="false" bufferTime="0.5" maintainAspectRatio="false" width="294" height="219"/>  
  84.     <mx:ControlBar id="ctrlBar" x="10" y="237" width="545" height="52">  
  85.           <mx:TextInput id="urlText" width="150" keyUp="onChangeUrl(event)" fontFamily="Arial" fontSize="12" color="#2C2B3A" enabled="true" height="26" toolTip="请输入flv文件的网络地址"/>  
  86.         <mx:Button  label="Play" click="playMovie(event)"/>  
  87.         <mx:Button  label="Stop" click="stopMovie(event)"/>  
  88.         <mx:Button  label="pause" click="pauseMovie(event)"/>  
  89.           
  90.     </mx:ControlBar>  
  91.     <mx:ControlBar id="ctrlBar0" x="10" y="297" width="545" height="52">  
  92.     <mx:Label   
  93.         text="音量"  
  94.         color="#ffffff"/>  
  95.          <!--播放器声音控制 -->  
  96.         <mx:HSlider id="hs_sound" width="80"  
  97.             minimum="0" maximum="1"  
  98.             thumbRelease="sound_thumbRelease(event)"   
  99.             change="sound_thumbChanges(event)"  
  100.             value="{flvideo.volume}" />  
  101.         <mx:CheckBox id="displayChk" label="全屏模式" change="displayStateChange()"/>  
  102.          
  103.     </mx:ControlBar>  
  104.     <mx:ControlBar id="ctrlBar1" x="10" y="357" width="545" height="52">  
  105.         <mx:Label x="480" y="341" id="playtime"   
  106.         text="{formatTimes(flvideo.playheadTime)} : {formatTimes(flvideo.totalTime)}"  
  107.         color="#ffffff"/>  
  108.         <mx:HSlider  minimum="0"  id="my_hs"  change="hs_onchange(event)" width="179"/>  
  109.          
  110.     </mx:ControlBar>  
  111. </mx:Application>  

 

posted @ 2010-01-17 14:33  与时俱进  阅读(300)  评论(0编辑  收藏  举报
友情链接:同里老宅院民居客栈