天天看點

Flash AS3 連續加載外部若幹圖檔

//載入圖檔

    public function loadClassBgPic():void

    {

      //載入圖檔沒有完畢

      bloadBgOver = false;

      //從xml資料中讀取并計算總的下載下傳量

      bmpUrlArr.push(classXml["class"]["pad"]["background"]);

      bmpUrlArr.push(classXml["class"]["title"]["background"]);

      for(var i:uint = 0; i < classXml["class"]["page"][email protected]; i++)

      {

        bmpUrlArr.push(classXml["class"]["page"]["content"][i]["background"]);

      }

      itotalBmpCount = bmpUrlArr.length;

      iloadedBmpCount = 0;

      //載入第一個圖檔

      loadBgPic(bmpUrlArr[iloadedBmpCount]);

    }

    public function loadBgPic(myURL:String):void

    {

      var rd:int = Math.random()*9999;

      //var myURL:String="http://192.168.1.104/flashdialog/flash/fast.jpg";//?"+rd;

      var myRequest:URLRequest = new URLRequest(myURL);

      var myLoader:Loader = new Loader();

      var myVariables:URLVariables = new URLVariables();

      myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,loadBgPicProgress);

      myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadBgPicOK);

      myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadBgPicError);

      myRequest.method = URLRequestMethod.POST;

      myLoader.load(myRequest);

      //trace("start load");

    }

    public function loadBgPicProgress(e:ProgressEvent):void

    {

      var iloaded:uint = e.bytesLoaded;

      var itotal:uint = e.bytesTotal;

      text_progress.text = "正在載入圖檔資料..."+iloaded+" / "+itotal;

    }

    public function loadBgPicOK(e:Event):void

    {

      var mload:Loader = Loader(e.target.loader);

      var bmp:Bitmap = e.target.content as Bitmap;

      //mc_bg.addBmp(bmp);

      //mc_bg.mc_content.addChild(bmp);

      bmp.width = 800;

      bmp.height = 600;

      mload.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS,loadBgPicProgress);

      mload.contentLoaderInfo.removeEventListener(Event.COMPLETE,loadBgPicOK);

      //圖檔載入完畢,存儲到MC數組中

      bmpArr[iloadedBmpCount] = new MovieClip();

      bmpArr[iloadedBmpCount].addChild(bmp);

      //将該圖檔mc設定到背景裡面去

      mc_bg.addChild(bmpArr[iloadedBmpCount]);

      bmpArr[iloadedBmpCount].visible = false;

      iloadedBmpCount++;

      if(iloadedBmpCount < itotalBmpCount)

      {

        //載入下一個圖檔

        loadBgPic(bmpUrlArr[iloadedBmpCount]);

      }else

      {

        iloadedBmpCount = 0;

        bloadBgOver = true;

      }

      showClassBgOver();

    }

    public function loadBgPicError(e:IOErrorEvent):void

    {

      //圖檔載入失敗,建立空mc

      bmpArr[iloadedBmpCount] = new MovieClip();

      //将該圖檔mc設定到背景裡面去

      mc_bg.addChild(bmpArr[iloadedBmpCount]);

      bmpArr[iloadedBmpCount].visible = false;

      var txt:TextField = new TextField();

      txt.text = "該圖檔載入失敗";

      bmpArr[iloadedBmpCount].addChild(txt);

      iloadedBmpCount++;

      //載入下一個圖檔

      if(iloadedBmpCount < itotalBmpCount)

      {

        //載入下一個圖檔

        loadBgPic(bmpUrlArr[iloadedBmpCount]);

      }else

      {

        iloadedBmpCount = 0;

        bloadBgOver = true;

      }

      showClassBgOver();

    }

    //載入背景圖檔完畢,根據目前所處狀态切換顯示不同背景

    public function showClassBgOver():void

    {

      for(var j:uint = 0; j < bmpArr.length; j++)

      {

        bmpArr[j].visible = false;

      }

      switch(gameState)

      {

        case "classPad":

        //題目面闆

        bmpArr[0].visible = true;

        break;

        case "inclass":

        //題目主題界面

        bmpArr[1].visible = true;

        break;

        case "classpage":

        //課程頁面,根據目前不同頁号顯示不同背景

        var temp:uint = ipage + 2;

        bmpArr[temp].visible = true;

        break;

      }

    }

以上!