2012-04-02 5 views
3

У меня есть код, который сохраняет экранный объект локально в виде файла изображения, но в какой-то момент он начал метать ошибку 2174. Этот код вызывается либо из контекстного меню, либо из события клавиатуры ,actionscript 3 filereference 'save' throws error

var sourceBmd:BitmapData = new BitmapData(displayObject.width,displayObject.height);    
sourceBmd.draw(displayObject,new Matrix(displayObject.width,0,0,displayObject.height)); 
var jpgEncoder:JPGEncoder = new JPGEncoder(80); 
var byteArray:ByteArray = jpgEncoder.encode(sourceBmd); 
try 
{ 
    filereference.save(byteArray,"posterImage.jpg");  
} 
catch (e:Error) 
{ 
    Debugging.alert("error: ",e.message);   
} 

, как вы можете видеть, FileReference имеет только одно действие - поэтому нет причин для ошибки 2174, чтобы быть выброшено. в случае, если вам интересно - я публикую для флеш-плеера 10.0

ОБНОВЛЕНИЕ: я нашел, что это имеет отношение к версии флеш-плеера: на 10.3 оно работает, а при 11.1 - в случае сбоя.

любые идеи? cheers, eRez

+0

пожалуйста, убедитесь, что вы строите для флэш-плеер версии 10.0.0 или выше –

+0

я делаю - это не изменится очень долго – eRez

+0

чеке пост от @The_asMan. Вы не можете запускать save() программно. Он должен находиться внутри «функции обработчика пользовательских действий». Как, например, в функции обработчика кнопки нажмите. –

ответ

0

this link решить проблему.

Кроме того, вы попытались перезапустить флэш-IDE после возникновения ошибки?

+0

Я столкнулся с этой ссылкой во время поиска ответа. проблема возникает во время работы внутри браузера, поэтому я не вижу, как на него повлияет перезапуск IDE. – eRez

+0

Причина, по которой я спросил, что вы вдруг начали получать ошибку, - это то, почему я попросил вас перезапустить все. Часто во флэш-связи все на самом деле не отражает небольшое изменение ... – loxxy

0

, прочитав docs, я могу предположить:

  1. вы работаете в флэш-плеер 10
  2. вы не вызываете filereference.cancel() в тех случаях, например, когда пользователь нажимает кнопку «отменить» или «закрыть «в открывшемся диалоговом окне; попробуйте
+0

спасибо, но я также прочитал этот документ, и я вызываю «cancel()», когда это необходимо, однако проблема возникает, даже если я не нажимаю кнопка отмены – eRez

+0

единственное другое предложение, которое я могу придумать: возьмите код из части **, сохраняя данные в локальные файлы ** из [здесь] (http://help.adobe.com/en_US/as3/dev /WS5b3ccc516d4fbf351e63e3d118a9b90204-7cf8.html); попробуйте его с и без 'fileRef.cancel()' в соответствующих случаях. Проверьте, не выдают ли они ту же ошибку. Если это так, то я собираюсь переустановить игроков, плагины браузера, IDE (танцы вуду - если это Flash Builder). Если они не выдают ошибку, я бы проверял разницу между вашим кодом и Adobe. Это единственное место, в котором вы фактически используете «FileReference» в своем проекте? –

2
+0

спасибо, но он вызван из пользовательского взаимодействия - либо событие контекстного меню, либо событие клавиатуры, - оба создают один и тот же erroand yes - я публикую для версии 10.и да, я также читал этот документ, поэтому нет - у меня нет другой ссылки на файл в то же время. – eRez

+0

Опубликовать трассировку стека при возникновении ошибки –