最近幫公司做flash,要求flash里播放視頻,采用的是flash播放外部flv視頻的方式。為了能夠在播放的時候有順利流暢的效果,所以事先把所要播放的flv文件全部先預加載,加載完畢后再開始播放。其部分主要action script類似如下,在flash里新建視頻元件,然后用netstream控制flv的播放,其方法bytesLoaded、bytesTotal可用作計算預加載的進度統(tǒng)計,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 閱讀(583) 評論(0)  編輯  收藏 所屬分類: 個人學習日記 、Ria
          主站蜘蛛池模板: 郴州市| 抚顺县| 高唐县| 西城区| 兴业县| 丹寨县| 体育| 虹口区| 南靖县| 梨树县| 平顺县| 都江堰市| 绵阳市| 诏安县| 乌兰察布市| 石阡县| 南平市| 普定县| 通道| 孝昌县| 永宁县| 上栗县| 和政县| 开封县| 平南县| 江达县| 石楼县| 乳山市| 仁怀市| 平乡县| 穆棱市| 吴堡县| 白河县| 景谷| 隆德县| 泸州市| 察雅县| 大埔县| 林州市| 交口县| SHOW|