Flash сохраняет в Windows, а не в Linux, FileReference.save () - PullRequest
1 голос
/ 14 августа 2011

Приведенный ниже код прекрасно компилируется в Flex 4 SDK в Fedora 15. Щелчок мышью открывает диалоговое окно, я нажимаю «ОК», и файл сохраняется, , но файл пуст .Я запускаю тот же SWF-файл (который был скомпилирован на компьютере с Linux) на компьютере с Windows, и созданный файл содержит ожидаемые данные.

Затем я разбил объявление FileReference из функции на уровень класса,в надежде избежать известной ошибки , но та же проблема сохраняется.

В надежде настроить обходной путь, я добавил в свой путь отладочный проигрыватель Flash и запустил файл из Flash без пользыбраузера, и он работает .Так что теперь проблема с Flex стала проблемой Firefox, возможно, из-за теневой процедуры , которую я использовал для установки плагина , не понимая, что происходит.Я использую 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).

1 Ответ

0 голосов
/ 14 августа 2011

Попробуйте поставить строку

var fr:FileReference = new FileReference();

на уровне класса (вне функции).Видимо, это известная ошибка:

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

...