Flexはローカル画像をアップロードし、事前に閲覧する実現方法です。
よくこのような機能を設計します。例えば、個性的な顔写真を変更する場合、この個性的な顔写真は最終的にサーバーのファイルシステムにアップロードする必要があります。この機能は、実際にはローカルのファイルを読み込む必要があります。flash player 10にはFileReferenceのクラスがありますが、ファイルの読み込みを実現するインターフェースはload関数です。注意すべきなのは、a、この関数はUI操作でしか使えません。例えば、ユーザーがボタンを押すということです。b、ロードした後のローカルファイルはASでcを使用できません。このインターフェースは非同期のプロセスです。つまり、すぐに読み込むのではなく、Listenerを追加して操作する必要があります。以下は参照コード
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import flash.net.FileReference;
import flash.net.FileFilter;
import flash.events.IOErrorEvent;
import flash.events.Event;
private var fr:FileReference;
private var imageTypes:FileFilter;
private function creationCompleteHandler(event:Event):void {
fr = new FileReference();
imageTypes = new FileFilter("Images (*.jpg, *.jpeg, *.png, *.gif)","*.jpg; *.jpeg; *.png; *.gif;")
fr.addEventListener(Event.SELECT, selectHandler);// , Listener
}
private function browseHandler(event:Event):void {
fr.browse([imageTypes]);// dialog
}
private function selectHandler(event:Event):void {
fr.addEventListener(Event.COMPLETE, onLoadComplete);// load listener
fr.load(); //
}
private function onLoadComplete(e:Event):void
{
imgPhoto.source = fr.data;
}
]]>
</fx:Script>
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<!-- ( 、 ) -->
</fx:Declarations>
<mx:Image id="imgPhoto" visible="true" autoLoad="true" width="1000" height="500"/>
<mx:Button id="btnBrowse" label="Browse" click="browseHandler(event)" />
</s:Application>
です。