ひっと

ローカルファイルを読み込む FileReference ActionScript(AS3)

~ Flashアプリ、ゲームのためのAS3サンプルプログラム集 ~

FileReferenceでローカルファイルを読み込む

ローカルの画像ファイルを読み込んでFlashに表示するサンプルです。
処理はローカルPCで行うのでファイルはアップロードされません。

AS3 サンプル ソースコード

ファイル読み込みのためにFileReferenceクラスを使います。
FileReferenceはバイナリデータで読み込むため、Loaderクラスを使って画像に変換します。
FileFilterで拡張子の指定ができます。

package 
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    //import flash.events.SecurityErrorEvent;
    //import flash.events.IOErrorEvent;
    import flash.text.TextField;

    import flash.net.FileReference;
    import flash.net.FileFilter;
    import flash.display.Loader;

    [SWF(width="400", height="300")]
    public class Main extends Sprite 
    {
        //画像表示用
        private var layer_image:Bitmap = new Bitmap();

        private var fr:FileReference = new FileReference();

        public function Main():void 
        {
            this.addChild(layer_image);//画像表示用

            //読み込みボタン配置
            var tf:TextField = new TextField();
            this.addChild(tf);

            tf.width = 200;
            tf.height = 40;
            tf.x = 50;
            tf.y = 50;
            tf.text = "画像ファイル読み込み開始!!\nここをクリックしてね"
            tf.backgroundColor = 0x00AA00;
            tf.background = true;
            tf.selectable = false;
            tf.addEventListener(MouseEvent.CLICK, onClickButton );
        }

        //ボタンクリック後の処理
        private function onClickButton(e:MouseEvent):void
        {
            fr.addEventListener(Event.SELECT, onFileReference_Select);
            fr.addEventListener(Event.COMPLETE, onFileReference_Complete);
            //必要なら...
            //fr.addEventListener(ProgressEvent.PROGRESS, onFileReference_Progress);
            //fr.addEventListener(Event.CANCEL, onFileReference_Cancel);
            //fr.addEventListener(IOErrorEvent.IO_ERROR, onFileReference_IOError);
            //fr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onFileReference_SecurityError);
            
            //フィルタ拡張子を指定
            var ff:FileFilter = new FileFilter("Images(JPEG, GIF, PNG)", "*.jpg;*.gif;*.png");

            //ファイル選択ダイアログ起動
            fr.browse( [ ff ] );
        }

        //FileReference 選択が終わった後の処理
        private function onFileReference_Select(e:Event):void 
        {
            fr.load();//ロード開始
        }
        
        //FileReference ロード成功時の処理
        private function onFileReference_Complete(e:Event):void 
        {
            //PNG JPEG等のバイナリファイルをloaderクラスで読み込みます。(デコードしてくれます)
            var loader:Loader = new Loader();

            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoader_Complete);
            //loader.contentLoaderInfo.(IOErrorEvent.IO_ERROR, onIOError);    //必要なら...

            loader.loadBytes( fr.data );
        }

        //Loader ロード成功時の処理
        private function onLoader_Complete(e:Event):void
        {
            var loader:Loader = e.currentTarget.loader;

            //Loaderに読み込んだ画像でBitmapDataを作成。
            var bmd:BitmapData = new BitmapData( loader.width, loader.height,true,0x000000);
            bmd.draw( loader );
            loader.unload();

            //スクリーンに表示
            layer_image.bitmapData = bmd;
        }


    }

}
目次へ
57801