乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      flv flash播放器全攻略 - 現(xiàn)實中的現(xiàn)實 - 博客園

       ShangShujie 2010-04-26

      flv flash播放器全攻略

       

      第一步:
      ------------------------------------------------------------------------------------------------------------

              如今,以flash player播放的流媒體flv文件越來越流行(PS:不知道是國內技術太落后,還是其他原因,還算不上常見),我們可以使用Flash當中自帶的 PlayBack組件來制作播放器。但是某些時候,PlayBack的Skin并不能滿足我們的需求,比如與網(wǎng)頁頁面風格不相符或者不能很好的集成到我們 的Flash站點當中,這時候我們就需要自己動手打造自己的PlayBack了。好在,制作基本功能的flv播放器不是很難\^_^/。下面我們一步一步 開始吧。
             首先我們打開Flash的元件庫,如圖1-1所示,我們點擊紅色的部分新建一個視頻元件

       

      圖1-1
      新建一個圖層并命名為video,將視頻元件從元件庫拖到舞臺中并更改大小為320*240,給舞臺中的視頻元件命名實例名為:myVideo。如圖 1-2

      圖1-2
      新建一個圖層命名為action,選擇第一幀按F9調出動作面板,輸入以下代碼:
      //創(chuàng)建一個名為nc的NetConnection對象
      var nc:NetConnection = new NetConnection();
      nc.connect(null);
      //創(chuàng)建一個名為ns的NetStream對象,并將nc作為參數(shù)填寫在括號內
      var ns:NetStream = new NetStream(nc);
      //創(chuàng)建一個名為myVideo的Video對象
      var myVideo:Video;
      //將myVideo播放的視頻指定為ns myVideo.attachVideo(ns);
      //讓ns執(zhí)行play()方法,括號內填寫flv文件的路徑,這里我用的是本地路徑
      ns.play(BT玩家.flv);

      代碼上有不清楚或者相關的請查看幫助文檔。我們按Ctrl+Enter導出看看,這時候我們應該能正常播放flv影片了。 PS:如果目前你手頭上沒有flv文件,不用擔心。到xunlei.com去下載.

      第二步:
      ------------------------------------------------------------------------------------------------------------

      新建screenshot、controlBar和control三個層,順序如圖1-3

      圖1-3
      把screenshot放在video層之下,導入screenShot.jpg,并將該元件放到screenshot層上與video的框架正好吻合。

      圖screenShot.jpg

      PS:對于影片截圖,放不放就根據(jù)需要啦。

      選擇層controlBar,用矩形工具繪制一個圓角矩形,將其轉換成元件后,設置Alpha值為50%。如圖1-4

      圖1-4
      選擇層control,是用文字工具,選擇字體為Webdings(系統(tǒng)自帶的,別跟我說沒有=。=),顏色為黑色,按下9打出特殊符號?,再按4打出另 外一個特殊符號?,然后按;打出?。分別將這兩個符號轉換為按鈕元件rewind_button、play_button和pause_button,并 定位好他們的位置如圖1-5

      圖1-5
      好,現(xiàn)在我們分別給上述幾個按鈕命名實例名為:rewind_btn、play_btn、pause_btn。選擇action層第一幀輸入一下代碼:
      rewind_btn.onRelease = function(){
      //NetSream.seek()方法用來指定流播放秒數(shù),或者說是播放位置。
      ns.seek(0);
      }
      play_btn.onRelease = function(){
      //播放or暫停
      ns.pause();
      }
      pause_btn.onRelease = function(){
      ns.pause();
      }

      好的,我們現(xiàn)在按Ctrl+Enter測試下影片。這里需要說明一下,play_btn和pause_btn函數(shù)內的代碼都為 ns.pause();,實 際上pause()這個方法是實現(xiàn)了視頻流播放和暫停兩個功能,當播放時按下就為暫停,暫停狀態(tài)下按下就是繼續(xù)播放。這里是為照顧初學者的理解我才這么做 的,追求完美的朋友可以自己做一個按鈕,實現(xiàn)播放符號和暫停符號的切換。

      第三步:
      ------------------------------------------------------------------------------------------------------------

      前兩部分我們學會了如何播放,控制視頻等等,現(xiàn)在需要什么呢?既然是flv是流媒體,為了是播放器顯得更人性化,現(xiàn)在還缺少一個Video加載的進 度條。還等什么,趕快一起動手吧。首先,我們在層controlBar新建一個圖層名為:loader,將筆觸顏色設置為黑色,填充設置為白色,用矩形工 具繪制一個進度條如圖1-6

      圖1-6 然后我們選擇該矩形并按F8將其轉換成一個名為loader的影片剪輯,并且將場景中該元件的實例名也命名為loader,設置Alpha值為60%。雙 擊進入該影片剪輯的編輯狀態(tài),選擇中間白色的填充,按F8轉換名為loadBar的影片剪輯,并命名該元件的實例名為loadBar。 然后返回場景,選擇action層的第一幀輸入以下代碼:
      //和平時見到的swf loading都差不多,這里我就不多解釋了
      var percent_Loaded:Number = 0;
      loader.loadBar._xscale = percent_Loaded;
      //創(chuàng)建一個videoStatus函數(shù)
      function videoStatus(){
      var videoTotal:Number = ns.bytesTotal;
      var videoLoaded:Number = ns.bytesLoaded;
      percent_Loaded = videoLoaded /videoTotal*100;
      loader.loadBar._xscale = percent_Loaded;
      }
      //創(chuàng)建一個計時器,每隔100毫秒執(zhí)行一次videoStatus函數(shù)
      var videoInterval = setInterval(videoStatus,100);

      第四步:
      ------------------------------------------------------------------------------------------------------------

      從現(xiàn)在開始,我們開始進入中級階段,制作Video的進度滑塊。雙擊進入元件loader的編輯狀態(tài),新建一層名為:scrub,,然后我們繪制一 個滑塊如圖1-7

      圖1-7
      按F8將其轉換為元件,轉換的時候注意將注冊點選擇為中上,千萬別選錯了哦。并將其實例名命名為:scrub。將其和loadBar對齊如圖1-8

      圖1-8 下面我們來制作播放進度條,在scrub層上新建一個圖層名為playBar,將層loadBar上的元件loadBar選中,按下Ctrl+C復制,然 后選擇層playBar,按Ctrl+Shift+V原位粘貼,更改其實例名為playBar,并將其屬性設置如圖1-9

       

      圖1-9
      返回主場景,選擇action層的第一幀輸入以下代碼:(注意更新的代碼是紅色,舊的代碼是黑色)
      var percent_Loaded:Number = 0;
      loader.loadBar._xscale = percent_Loaded;
      loader.playBar._xscale = 0;
      var duration:Number;
      //這里可以查看幫助文檔中NetStream.onMetaData 處理函數(shù)
      //duration獲取影片的長度
      ns.onMetaData = function(obj:Object){
      duration = obj.duration;
      };
      function videoStatus(){
      var videoTotal:Number = ns.bytesTotal;
      var videoLoaded:Number = ns.bytesLoaded;
      percent_Loaded = videoLoaded /videoTotal*100;
      loader.loadBar._xscale = percent_Loaded;
      loader.scrub._x = ns.time / percent_Loaded * loader.loadBar._width;
      loader.playBar._xscale = ns.time / percent_Loaded *100;
      }
      var videoInterval = setInterval(videoStatus,100);
      好,現(xiàn)在我們Ctrl+Enter測試下影片,怎么樣,滑塊跟隨著播放時間的流逝在移動了吧。

      第五步:
      ------------------------------------------------------------------------------------------------------------

      我們的Video看過一次了,這時候我們還想要再看其中的某一部分,我們總不能從頭播放吧。因此我們現(xiàn)在舊來實現(xiàn)拖動播放滑塊,實現(xiàn)Video自由 的播放。繼續(xù)寫代碼^_^ 在場景中action層第一幀添加以下代碼:
      var scrubInterval;
      loader.scrub.onPress = function(){
      //當按下滑塊,清除videoInterval計時器
      clearInterval(videoInterval);
      //設置scrubInterval計時器
      scrubInterval = setInterval(scrubit,10);
      //設置滑塊的滑動范圍 this.startDrag(false,0,this._y,loader.loadBar._width,this._y);
      }
      loader.scrub.onRelease = loader.scrub.onReleaseOutside = function(){
      //當釋放滑塊,清除csrubInterval計時器 clearInterval(scrubInterval);
      //恢復videoInterval計時器
      videoInterval = setInterval(videoStatus,100);
      this.stopDrag();
      }
      //創(chuàng)建scrubit方法
      function scrubit(){
      //滑塊所指的播放seek的秒數(shù)等于滑塊的x坐標除以loadBar的寬度,再乘以總秒數(shù)
      ns.seek(Math.floor((loader.scrub._x / loader.loadBar._width)*duration));
      //讓playBar的縮放跟隨滑塊的位置變化而變化
      loader.playBar._xscale = loader.scrub._x / loader.loadBar._width *100;
      }
      好了,現(xiàn)在我們按Ctrl+Enter測試下影片,是不是發(fā)現(xiàn)與PlayBack越來越像了^_^

      第六步:
      ------------------------------------------------------------------------------------------------------------

      下面我們?yōu)镻layer添加聲音的控制。首先,我們在control層上新建一層名為sound,選擇文字工具,使用Webdings字體,按 shift+W打出?符號,選擇修改,變形,水平翻轉,按F8將其轉換為影片剪輯。雙擊進入編輯狀態(tài),在第二幀處插入關鍵幀。我們在第二幀上的?符號上畫 一條斜線如圖1-10

      圖1-10 如圖1-10,我們在第一幀上寫上代碼:
      stop();
      var vol = 100;

      第二幀上寫上代碼:
      vol = 0;

      返回場景,將該元件的實例名命名為vSound,選擇層action的第一幀,輸入以下代碼:
      vSound.attachAudio(ns);
      var video_sound:Sound = new Sound(vSound);
      vSound.onRelease = function(){
      if(this.vol == 100){
      video_sound.setVolume(0);
      this.gotoAndStop(2);
      }else{
      video_sound.setVolume(100);
      this.gotoAndStop(1);
      }
      }

      Ctrl+Enter測試一下。這里需要說明一下,其實只建立一個Sound對象就可以控制聲音了,但是如果不指定是誰的聲音時,他控制的是根影片的音 量,因此這里將ns中的聲音引入到vSound影片剪輯當中,然后指定video_sound對象控制的是vSound影片剪輯當中的聲音。

      第七步:
      ------------------------------------------------------------------------------------------------------------

              我們的播放器總算有模有樣了,不過還缺少樣東西。大家在播放流媒體的時候,是不是常常會見到緩沖?沒錯,就是緩沖。還等什么,趕快動手。 首先,我們在層video和controlBar之間新建一層并命名為buffer,然后用矩形在舞臺上繪制一個320*240的黑色矩形,將其和 video的位置對齊,正好能擋著video。然后我們按F8將其轉換給影片剪輯,并命名其實例名為buffer_mc。雙擊進入編輯狀態(tài),新建一層名為 text,用文字工具輸入文字:視頻緩沖中。并將其轉換為元件創(chuàng)建一個Alpha漸變的動畫,如圖1-11:

       

      圖1-11
      返回場景,選擇層action,輸入一下代碼:
      //設置ns緩沖時間為15秒
      ns.setBufferTime(15);
      //創(chuàng)建ns的onStatus處理函數(shù),詳細請查看幫助文檔
      ns.onStatus = function(info:Object){
      //當緩沖為滿的時候,buffer_mc隱藏
      if(info.code == "NetStream.Buffer.Full"){
      buffer_mc._visible = false;
      }
      //當緩沖空的時候,buffer_mc顯示
      if(info.code == "NetStream.Buffer.Empty"){
      buffer_mc._visible = true;
      }
      //當視頻播放結束時,重新播放
      if(info.code == "NetStream.Play.Stop"){
      ns.seek(0);
      }
      }
      OK,導出測試一下。

      第八步:
      ------------------------------------------------------------------------------------------------------------

      下面我們來給播放器做個右鍵菜單(;^ ^)首先,在action層第一幀輸入一下代碼:
      var myMenu:ContextMenu = new ContextMenu();
      myMenu.hideBuiltInItems();
      這里我們自定義了一個myMenu為新的ContexMenu對象,然后我們使用hideBuiltInItems()方法將“設置”和“版權聲明”以外 的選項都隱藏起來。導出測試一下。 然后我們再輸入以下代碼:
      var i1:ContextMenuItem = new ContextMenuItem("::::: Video Controls :::::",trace);
      var i2:ContextMenuItem = new ContextMenuItem("Play / Pause",pauseIt,true);
      var i3:ContextMenuItem = new ContextMenuItem("Replay",replayIt);
      var i4:ContextMenuItem = new ContextMenuItem("Select a Flv files",selectIt,true);
      var i5:ContextMenuItem = new ContextMenuItem("Copyright 2006 Sailon",trace,true);
      myMenu.customItems[0] = i1;
      myMenu.customItems[1] = i2;
      myMenu.customItems[2] = i3;
      myMenu.customItems[3] = i4;
      myMenu.customItems[4] = i5;

      定義i1-i5為新的ContexMenuItem,并在該構造函數(shù)中填入相應的參數(shù),具體的參數(shù)說明可以查看幫助文檔^_^ 然后我們將myMenu的屬性coustomItems(數(shù)組)賦給i1-i5。 好,現(xiàn)在我們定義好了菜單,下面我們給所對應菜單寫上方法,代碼如下:
      import flash.net.FileReference;
      //播放暫停方法
      function pauseIt() {
      ns.pause();
      }
      //重放方法
      function replayIt() {
      ns.seek(0);
      }
      //選擇Flv方法 function selectIt(){
      var listener:Object = new Object();
      listener.onSelect = function(file:FileReference):Void {
      trace("Opened " + file.name); playVideo(file.name);
      }
      listener.onCancel = function(file:FileReference):Void {
      trace("User cancelled");
      }
      var fileRef:FileReference = new FileReference();
      fileRef.addListener(listener);
      fileRef.browse();
      }
      這里需要說明一下,selectIt()方法在選擇flv文件后會觸發(fā)playVideo()方法,因此我們這里還需要修改步驟一的代碼。將步驟一的代碼 修改如下:
      var nc:NetConnection = new NetConnection();
      nc.connect(null);
      var ns:NetStream = new NetStream(nc);
      var myVideo:Video;
      myVideo.attachVideo(ns);
      function playVideo(video){
      ns.play(video);
      trace("playVido:" + video);
      }
      playVideo("BT玩家.flv");

              這里有個小小的遺憾目前FileReference這個類還不支持讀取目錄的功能,所以我們所需要選擇的flv文件必須和swf文件放在同一個目錄下才可 以正常播放。 OK,我們導出測試一下。 最后,本文在這里只是拋磚引玉,查閱并熟悉幫助文檔里的函數(shù)方法,希望大家還可以創(chuàng)造出功能更強大更好玩的播放器來。

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多