下面的代码在Fedora 15上的Flex 4 SDK上编译得很好。鼠标单击打开对话框,我单击确定,然后保存文件,但文件为空。我在Windows机器上运行相同的SWF文件(在Linux机器上编译),并且创建的文件包含预期的数据。
然后我将FileReference声明从函数中分解为类级别,希望避免a known bug,但同样的问题仍然存在。
希望设置一个变通方法,我将调试Flash播放器添加到我的路径并在没有浏览器的情况下从Flash运行该文件,并且工作。所以现在Flex问题已成为Firefox的问题,可能是因为shady procedure I used to install the plugin没有真正理解发生了什么。我正在运行Firefox 5.0。
本质上我的工作流程是固定的,但执行上述操作的人可能无法使用FileReference.save()项目?我应该担心这种边缘情况吗?
/*
WriteTheFile.as
Original code by Brian Hodge (brian@hodgedev.com)
Test to see if ActionScript/Flash can write files
*/
package{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.utils.ByteArray;
import flash.net.FileReference;
public class WriteTheFile extends Sprite
{
private var _xml:String;
private var fr:FileReference;
public function WriteTheFile():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//Calling the save method requires user interaction and Flash Player 10
stage.addEventListener(MouseEvent.MOUSE_DOWN, _onMouseDown);
}
private function _onMouseDown(e:MouseEvent):void
{
fr = new FileReference()
fr.save("<xml><test>data</test></xml>", "filename.txt");
}
}
}
编辑:错过了一行,修正了
编辑:在上面的代码中解决了答案,但存在同样的问题。
编辑:当调用独立播放器时,这适用于同一系统。因此,这是一个浏览器(FF 5.0)插件问题。
答案 0 :(得分:0)
尝试放行
var fr:FileReference = new FileReference();
在班级(在职能之外)。显然这是一个已知的错误:
http://www.techper.net/2007/12/30/flash-filereferencebrowse-problems-on-linux/