LoadImage

ローカルファイルの読み込みってやったこと無かったので試した。今回は画像(PNG,JPG,GIF)のみ。

Get Adobe Flash player


ローカルPCから画像を読み込んで配置するだけ。ここではやってないけど、ちゃんとBitmapへのアクセスもできる。バイトアレイをデコードできるなら、なんでもいけるんじゃないかな。試してないけど。

▼Wonderfl
http://wonderfl.net/code/147ee0526d127fde3df005e2da9f31816395032c

▼ActionScript AS3(FP10)
[sourcecode language=”as3″]
/*
ローカルファイルの読み込みって
やったこと無かったので試した。
*/
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);
}
}
[/sourcecode]