| 经常会设计一个这样的功能,比如更改个性头像,这个个性头像最终需要上传到服务器的文件系统中,但是程序希望在用户选择后直接有个预览,然后用户才进行上传。这个功能技术上其实就是需要对本地的文件能进行读取。在flash player10中有个类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 visible="true" autoLoad="true"/>
 <mx:Button label="Browse" />
 </s:Application>
 
 (编辑:源码网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |