最近幫公司做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 閱讀(587) 評論(0)  編輯  收藏 所屬分類: 個人學習日記Ria
          主站蜘蛛池模板: 岢岚县| 吉林省| 鄂托克旗| 海林市| 临汾市| 株洲县| 高阳县| 中阳县| 仪征市| 金湖县| 仁化县| 保山市| 泸水县| 汶川县| 徐闻县| 郧西县| 光泽县| 芦溪县| 正定县| 拉孜县| 天等县| 寿宁县| 阳曲县| 蒲江县| 张家港市| 沧源| 鄢陵县| 龙南县| 拉萨市| 鄂托克前旗| 西城区| 通许县| 堆龙德庆县| 祁门县| 中江县| 大邑县| 灵山县| 绥阳县| 神木县| 琼结县| 黎平县|