Flash在Windows中保存,而不是在Linux中,FileReference.save()



下面的代码在Fedora 15上的Flex 4 SDK上编译得很好。鼠标单击打开对话框,单击ok,保存了一个文件,但该文件为空。我在Windows机器上运行相同的SWF文件(在Linux机器上编译的),创建的文件包含预期的数据。

然后我将filerreference声明从函数分解到类级别,希望避免已知的错误,但同样的问题仍然存在。

希望建立一个解决方案,我将调试Flash播放器添加到我的路径中,并在没有浏览器的情况下从Flash运行文件,并且它工作。所以现在Flex的问题变成了Firefox的问题,也许是因为我在没有真正理解发生了什么事情的情况下安装插件时使用了一个可疑的过程。我用的是火狐5.0。

本质上我的工作流程是固定的,但也许执行上述操作的人将无法使用filerreference .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)插件问题。

试着把

var fr:FileReference = new FileReference();

在类级别(在函数之外)。显然这是一个已知的错误:

http://www.techper.net/2007/12/30/flash-filereferencebrowse-problems-on-linux/

相关内容

  • 没有找到相关文章

最新更新