最近幫公司做flash,要求flash里播放視頻,采用的是flash播放外部flv視頻的方式。為了能夠在播放的時候有順利流暢的效果,所以事先把所要播放的flv文件全部先預加載,加載完畢后再開始播放。其部分主要action script類似如下,在flash里新建視頻元件,然后用netstream控制flv的播放,其方法bytesLoaded、bytesTotal可用作計算預加載的進度統計,progressBar顯示loading條。如果服務器不支持flv文件,將flv改為swf類型便可。

          stop();
          my_nc = new NetConnection();
          my_nc.connect(null);
          my_ns = new NetStream(my_nc);
          Finance.attachVideo(my_ns);
          my_ns.play("Finance.swf");

          my_nc3 = new NetConnection();
          my_nc3.connect(null);
          my_ns3= new NetStream(my_nc3);
          ns3.attachVideo(my_ns3);
          my_ns3.play("3.swf");

            
             this.createTextField("loaded_txt", this.getNextHighestDepth(), 10, 10,
              160, 22);
              this.createEmptyMovieClip("progressBar_mc", this.getNextHighestDepth());
              progressBar_mc.createEmptyMovieClip("bar_mc",
              progressBar_mc.getNextHighestDepth());
              with (progressBar_mc.bar_mc) {
              beginFill(0xFF0000);
              moveTo(0, 0);
              lineTo(100, 0);
              lineTo(100, 10);
              lineTo(0, 10);
              lineTo(0, 0);
              endFill();
              _xscale = 0;
              }
              progressBar_mc.createEmptyMovieClip("stroke_mc",
              progressBar_mc.getNextHighestDepth());
              with (progressBar_mc.stroke_mc) {
              lineStyle(0, 0x000000);
              moveTo(0, 0);
              lineTo(100, 0);
              lineTo(100, 10);
              lineTo(0, 10);
              lineTo(0, 0);
              }
              var loaded_interval:Number = setInterval(checkBytesLoaded, 500,
              my_ns,my_ns3);
           
              function checkBytesLoaded(my_ns:NetStream) {
              var pctLoaded:Number = Math.round(my_ns.bytesLoaded / my_ns.bytesTotal
              * 100);
              loaded_txt.text = Math.round(my_ns.bytesLoaded / 1000 + my_ns3.bytesLoaded / 1000) + " of " +
              Math.round(my_ns.bytesTotal / 1000 + my_ns3.bytesTotal / 1000) + " KB loaded (" + pctLoaded +
              "%)";
              progressBar_mc.bar_mc._xscale = pctLoaded;
              if (pctLoaded>=100) {
            loaded_txt._visible=false;
            progressBar_mc._visible=false;
            clearInterval(loaded_interval);
            play();
              }else{
            stop();
            }
              }

          posted on 2007-09-26 10:24 lzj520 閱讀(584) 評論(0)  編輯  收藏 所屬分類: 個人學習日記Ria
          主站蜘蛛池模板: 资兴市| 青田县| 乡城县| 县级市| 华阴市| 武义县| 青岛市| 翁源县| 咸宁市| 库伦旗| 葵青区| 丹凤县| 克东县| 沂源县| 莱州市| 江津市| 武胜县| 文山县| 义乌市| 介休市| 门源| 馆陶县| 若尔盖县| 万载县| 朝阳市| 吉木萨尔县| 日照市| 美姑县| 平顺县| 平乡县| 土默特右旗| 沛县| 鹿邑县| 株洲县| 宿州市| 柳河县| 白城市| 元江| 咸宁市| 宝清县| 汉源县|