ホームに戻る
 ActionScript3.0 複数ファイルの読み込み
package{
  import flash.display.Loader;
  import flash.display.Sprite;
  import flash.display.Bitmap;
  import flash.events.Event;
  import flash.events.ProgressEvent;
  import flash.events.IOErrorEvent;
  import flash.text.TextField;
  import flash.media.Sound;
  import flash.net.URLRequest;
  
[SWF(width="300", height="200", backgroundColor="0xFFFFFF")]

  public class Main extends Sprite
  {
    // ファイルの場所とサイズのリスト
    private const urlArray:Array = [
      ["http://mniwa.web.fc2.com/mail.png",1302],
      ["http://mniwa.web.fc2.com/mail.png",1302],
      ["http://mniwa.web.fc2.com/mp3/song_b.mp3",445627]
    ];
    private var loader:Array;
    private var bitmap:Bitmap;
    private var text_field:TextField;
    private var totalSize:int = 0;    // 全ファイルのサイズを記録
    private var loadedCount:int = 0;  // 読み込み済みのファイル数をカウント
    private var loadedSize:int = 0;   // すでに読み込んだファイルのサイズを記録

    public function Main():void
    {
      // テキストフィールドの準備
      text_field = new TextField();
      text_field.x = 0;               // x 座標
      text_field.y = 0;               // y 座標
      text_field.width = 300;         // 幅
      text_field.height = 200;        // 高さ
      addChild(text_field);

      // 拡張子の判別用
      var patternIMG:RegExp = /\.(jpe?g|gif|png)$/i;
      var patternMP3:RegExp = /\.(mp3)$/i;
    
      loader = new Array();
      for(var i:int = 0; i < urlArray.length; i++)
      {
        totalSize += urlArray[i][1];
        // ローダーの準備
        if(patternIMG.test(urlArray[i][0]))
        {
          loader[i] = new Loader();
          loader[i].contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
          loader[i].contentLoaderInfo.addEventListener(Event.OPEN, onOpen);
          loader[i].contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
          loader[i].contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
        }
        else if(patternMP3.test(urlArray[i][0]))
        {
          loader[i] = new Sound();
          loader[i].addEventListener(ProgressEvent.PROGRESS, onProgress);
          loader[i].addEventListener(Event.OPEN, onOpen);
          loader[i].addEventListener(Event.COMPLETE, onComplete);
          loader[i].addEventListener(IOErrorEvent.IO_ERROR, onError);
        }
        // 最初のファイルを読み込む
        var urlRequest:URLRequest;
        urlRequest = new URLRequest(urlArray[loadedCount][0]);
        loader[loadedCount].load(urlRequest);
      }
    }

    private function onProgress(e:ProgressEvent):void
    {
      text_field.appendText("onProgress : ");
      text_field.appendText(totalSize + " バイト中 ");
      text_field.appendText(loadedSize + e.bytesLoaded + " バイト読み込み完了\n");
      if(e.bytesTotal - e.bytesLoaded == 0){
        loadedSize += e.bytesTotal;
      }
    }

    private function onOpen(e:Event):void
    {
      if(loadedCount == 0){
        text_field.appendText("onOpen : ロード開始\n");
      }
    }

    private function onComplete(e:Event):void
    {
      loadedCount++;

      if(loadedCount == urlArray.length){
        var bitmap1:Bitmap = Bitmap(loader.shift().content);
        var bitmap2:Bitmap = Bitmap(loader.shift().content);
        var sound:Sound = Sound(loader.shift());

        bitmap1.x = 50;
        bitmap1.y = 50;
        addChild(bitmap1);

        bitmap2.x = 50;
        bitmap2.y = 100;
        addChild(bitmap2);

        sound.play();
        text_field.appendText("onComplete : ロード完了\n");
      }
      else
      {
        // 次のファイルを読み込む
        var urlRequest:URLRequest;
        urlRequest = new URLRequest(urlArray[loadedCount][0]);
        loader[loadedCount].load(urlRequest);
      }
    }

    private function onError(event:IOErrorEvent):void 
    {
      text_field.appendText("onError : ファイル読み込みエラー\n");
    }
  }
}

inserted by FC2 system