FLEX 4 :选择本地文件编辑

代码如下:

<?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/halo"
      minWidth="1024" minHeight="768" creationComplete="init();"
      xmlns:mx1="library://ns.adobe.com/flex/mx">
 
 <s:layout>
  
  <s:HorizontalLayout/>
  
 </s:layout>
 
 <fx:Script>

  <![CDATA[
   
   import mx.core.UIComponent;
   
   import flash.net.FileFilter;
   
   import flash.net.FileReference;
   
   
   
   private var imageFilter:FileFilter=
    new FileFilter("图片文件(*.jpeg;*.jpg;*.png;*.gif)","*.jpeg;*.jpg;*.png;*.gif");
   
   private var imageReference:FileReference=new FileReference();
   
   private var imageLoader:Loader=new Loader();
   
   
   
   private function init():void{
    
    var uicomp:UIComponent=new UIComponent();
    
    uicomp.addChild(imageLoader);
    
    canvas.addElement(uicomp);
    
   }
   
   private function loadImage():void{
    
    imageReference.browse([imageFilter]);
    
    imageReference.addEventListener(Event.SELECT,fileSelected);
    
   }
   
   private function fileSelected(event:Event):void{
    
    imageReference.addEventListener(Event.COMPLETE,fileComplete);
    
    imageReference.addEventListener(ProgressEvent.PROGRESS,fileProgress);
    
    imageReference.load();
    
   }
   
   private function fileComplete(event:Event):void{
    
    imageLoader.loadBytes(imageReference.data);
    
   }
   
   private function fileProgress(event:ProgressEvent):void{
    
    
    
   }
   
  ]]>
  
 </fx:Script>
 <s:Button label="LoadImage" click="loadImage();"/>
 <mx1:Canvas id="canvas" width="553" height="437" borderColor="0x000000" borderStyle="solid">
 </mx1:Canvas>
 
</s:Application>

遇到的后续问题:

    加载本地图片后舞台的大小变化。 即获得本地图片的width 和 height 等原始属性。

解决办法:

  通过 Loader 类 的 contentLoaderInfo 属性 : var target:LoaderInfo = evt.currentTarget as LoaderInfo;

  代码如下:

 private function fileComplete(event:Event):void
  {
   
     loder.loadBytes(file.data);
   
     loder.contentLoaderInfo.addEventListener(Event.COMPLETE,completeHander);
   
  }

 private function completeHander(evt:Event):void
  {
     var target:LoaderInfo = evt.currentTarget as LoaderInfo;
   
     img.width = target.width;
   
     img.height = target.height;  // 即图片宽高
   
  }

posted on 2011-07-27 16:30  破阵子 . 如是我闻  阅读(840)  评论(0编辑  收藏  举报

导航