ホームに戻る
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");
}
}
}