2012-02-15 3 views
1

Я создал приложение для рисования, и когда пользователь хочет сохранить его рисунок, он просто нажимает кнопку сохранения, и появляется диалоговое окно - или должно быть сделано.AS3 FileReference.save() работает при тестировании локально, но не в браузере

При тестировании локально на dev машине это не проблема, но всякий раз, когда приложение загружается в браузере, это не сработает. Даже если я загружу локальный файл SWF в браузере, он не будет работать.

Следующий код - это то, что я использую для сохранения файла, и, как сказано, он работает нормально локально, но всякий раз, когда он входит в браузер, он не открывается. Диалог сохранения просто не появляется.

Любые предложения?

var bitmapData:BitmapData = new BitmapData(canvas.width, canvas.height); 
bitmapData.draw(canvas); 
var jpg:JPEGEncoder = new JPEGEncoder(100); 
var ba:ByteArray = jpg.encode(bitmapData); 

file = new FileReference(); 
file.addEventListener(Event.COMPLETE, fileSaveComplete); 
file.addEventListener(IOErrorEvent.IO_ERROR, error); 
file.save(ba, 'FileName.jpg'); 

Запуск FlashPlayer 11 и сбор до 10.2 BTW.

ответ

5

Это проблема безопасности. Диалоговое окно сохранения файла теперь может быть открыто только в результате прямого пользовательского события, как щелчок. Одним из решений является уведомление пользователя о том, когда изображение создано, и спросить, хочет ли он сохранить файл локально. И если он нажимает «да», вы вызываете метод save.

Вот подробнее об этом изменении:

http://www.bogdanmanate.com/2010/05/12/flex-error-2176-when-using-filereference/

Надеется, что это помогает. Хорошего дня.

+2

Большое спасибо. Код, который я вставил выше, вызывается из созданного пользовательского события, и поэтому он не работает. Я изменил его так, что он вызван из MouseEvent, и мы пойдем! И тебе хорошего дня. – Martin

+0

Отлично! Это может быть раздражающей особенностью, но это действительно предотвращает некоторые неприятные вещи. –

+0

На стороне примечания, не бросает ли он и ошибка в отладочном проигрывателе, если вы пытаетесь вызвать FileReference.save() без МАУ? – joncys

Смежные вопросы