flash是没有办法与本地程序交互

在Flash Player10之前,flash是没有办法与本地程序交互的,有些操作,比如保存图片,一般的做法都是先把数据发送到后台然后再发送到前台保存,这样无疑非常麻烦,必须要写一系列的前后台交互处理,幸好在Flash Player10中,Adobe提供了一些接口用于本地的交互,比如文件保存本地,本地文件打开,本地文件上传等,像TWaver的FlexDemo,工具栏上提供了,保存图片,保存xml,打开xml等操作,如下所示,



通过这几个按钮可以方便的和本地进行交互

Save Image和Save XML很简单,调用的是FileReference的save方法,

Open XML是用FileReference的browse方法,通过load数据以后,可以直接通过

var xmlText:String = fr.data.readUTFBytes(fr.data.length);把数据读取进来,代码如下:
var fr:FileReference = new FileReference();
if (fr.hasOwnProperty("browse")) {
  fr.addEventListener(Event.SELECT, function(e:Event):void {
    fr.load();
  });
  fr.addEventListener(Event.COMPLETE, function(ex:Event):void {
    var xmlText:String = fr.data.readUTFBytes(fr.data.length);
    var serializer:XMLSerializer = new XMLSerializer(network.elementBox);
    serializer.deserialize(xmlText,network.currentSubNetwork);
  });
  var fileFilter:FileFilter = new FileFilter("XML: (*.xml)", "*.xml");
  fr.browse([fileFilter]);
  } else {
    Alert.show("install Flash Player 10 to run this feature", "Not Supported");
  }


但是很多客户把Demo部署到FB中运行,保存图片的时候,会有一个异常的对话框,

显示:”install Flash Player 10 to run this feature”

这个是因为,不止要求客户端的Flash Player为10,而且要求编译时设置以下环境变量:-target-player=10.0.0,

另外如果用SDK4.1,在Flash Builer4中,直接用fr.load();也会报异常,加上-target-player=10.0.0就可以了

具体请参考,Flex导出图片

猜你喜欢

转载自dvcz38.iteye.com/blog/1057783