/* ローカルファイルの読み込みって やったこと無かったので試した。 */ package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; import flash.text.TextFormat; [SWF(backgroundColor="0x777777",width=465,height=465)] public class Main extends Sprite { public function Main() { var tf:TextField = new TextField(); tf.defaultTextFormat = new TextFormat("_sans",36,0xCCCCCC); tf.text = "Stage上をクリックするとダイアログが開きます。\n画像ファイル(PNG,JPG,GIF)を指定してください。"; tf.wordWrap = true; tf.multiline = true; tf.width = stage.stageWidth; tf.autoSize = "left"; tf.selectable = false; this.addChild(tf) stage.addEventListener(MouseEvent.CLICK,atClick); } private function atClick(event:MouseEvent):void{ var loadFile:LoadFile = new LoadFile(); loadFile.atComplete = atComplete; loadFile.Start(); } private function atComplete(event:Event):void{ this.addChild(event.target.content); } } } import flash.display.Loader; import flash.events.Event; import flash.net.FileReference; import flash.system.LoaderContext; class LoadFile{ private var _fileReference:FileReference; public var atComplete:Function = function(event:Event):void{}; /** * 開始 * */ public function Start():void { if(_fileReference){ return; } _fileReference = new FileReference(); _fileReference.browse(); _fileReference.addEventListener(Event.SELECT,atSelect); } /** * ファイルの選択が完了すると動く * @param event * */ private function atSelect(event:Event):void{ _fileReference.removeEventListener(Event.SELECT,atSelect); _fileReference.addEventListener(Event.COMPLETE,atFileComplete); _fileReference.load(); } /** * 選択したファイルを読み込み完了すると動く * @param event * */ private function atFileComplete(event:Event):void{ _fileReference.removeEventListener(Event.COMPLETE,atFileComplete); var loader:Loader = new Loader(); loader.loadBytes(event.target.data,new LoaderContext()); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,atBytesComplete); } /** * 読み込んだファイルのバイトアレイを変換完了で動く * @param event * */ private function atBytesComplete(event:Event):void{ event.target.removeEventListener(Event.COMPLETE,atBytesComplete); atComplete(event); } } LoadImage